From 45fafc7d5ea66aec1919d58458a6a9deeeb7c726 Mon Sep 17 00:00:00 2001 From: Spencer Axelrod Date: Mon, 28 Aug 2023 09:28:53 -0500 Subject: [PATCH 01/12] merge_manifests fix for rows with no guid --- gen3/tools/indexing/merge_manifests.py | 58 ++++++++++++++------------ 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/gen3/tools/indexing/merge_manifests.py b/gen3/tools/indexing/merge_manifests.py index 0e05c2eaa..6ea3e7bb0 100644 --- a/gen3/tools/indexing/merge_manifests.py +++ b/gen3/tools/indexing/merge_manifests.py @@ -106,17 +106,24 @@ def merge_bucket_manifests( headers = set() all_rows = {} + records_with_no_guid = [] for manifest in files: records_from_file, _ = get_and_verify_fileinfos_from_manifest( manifest, include_additional_columns=True ) - records_with_no_guid = [] + # records_with_no_guid = [] for record in records_from_file: # simple case where this is the first time we've seen this hash headers.update(record.keys()) if record[MD5_STANDARD_KEY] not in all_rows: record_to_write = copy.deepcopy(record) all_rows[record_to_write[MD5_STANDARD_KEY]] = [record_to_write] + + new_guid = record.get(GUID_STANDARD_KEY) + if not new_guid: + # since there's no guid specified to differentiate this from other + # entries, we will add metadata to all records later + records_with_no_guid.append(record) else: # if the hash already exists, we need to try and update existing # entries with any new data (and ensure we don't add duplicates) @@ -145,34 +152,33 @@ def merge_bucket_manifests( # for the entries where there was no GUID specified, we will add that metadata # to all previous records - for record in records_with_no_guid: - updated_records = _get_updated_records( - record=record, - existing_records=all_rows.get(record[MD5_STANDARD_KEY], []), - continue_after_error=continue_after_error, - allow_mult_guids_per_hash=allow_mult_guids_per_hash, - columns_with_arrays=columns_with_arrays, - ) - # it's possible a record without a GUID got added if it was the FIRST - # instance of that md5, so we just need to make sure that it's removed - # if there was another GUID provided later on - # - # this also handles the edge case where there were multiple rows for the md5 - # and NO guid was provided (e.g. we want a single combined row of updated values) - any_guid_provided = [ - record.get(GUID_STANDARD_KEY) + for record in records_with_no_guid: + updated_records = _get_updated_records( + record=record, + existing_records=all_rows.get(record[MD5_STANDARD_KEY], []), + continue_after_error=continue_after_error, + allow_mult_guids_per_hash=allow_mult_guids_per_hash, + columns_with_arrays=columns_with_arrays, + ) + # it's possible a record without a GUID got added if it was the FIRST + # instance of that md5, so we just need to make sure that it's removed + # if there was another GUID provided later on + # + # this also handles the edge case where there were multiple rows for the md5 + # and NO guid was provided (e.g. we want a single combined row of updated values) + any_guid_provided = [ + record.get(GUID_STANDARD_KEY) + for record in updated_records.values() + if record.get(GUID_STANDARD_KEY) + ] + if not any_guid_provided: + all_rows[record[MD5_STANDARD_KEY]] = updated_records.values() + else: + all_rows[record[MD5_STANDARD_KEY]] = [ + record for record in updated_records.values() if record.get(GUID_STANDARD_KEY) ] - if not any_guid_provided: - all_rows[record[MD5_STANDARD_KEY]] = updated_records.values() - else: - all_rows[record[MD5_STANDARD_KEY]] = [ - record - for record in updated_records.values() - if record.get(GUID_STANDARD_KEY) - ] - _create_output_file( output_manifest, headers, all_rows, output_manifest_file_delimiter ) From 172b64fc3fa33f0a09c0a63473a2a9ee110f60b9 Mon Sep 17 00:00:00 2001 From: SpencerAxelrod Date: Mon, 28 Aug 2023 14:31:02 +0000 Subject: [PATCH 02/12] Apply automatic documentation changes --- docs/_build/doctrees/environment.pickle | Bin 1554905 -> 1553141 bytes docs/_build/doctrees/tools/drs_pull.doctree | Bin 130578 -> 130169 bytes docs/_build/doctrees/tools/indexing.doctree | Bin 101126 -> 100101 bytes docs/_build/doctrees/tools/metadata.doctree | Bin 36402 -> 35919 bytes docs/_build/html/index.html | 8 +++--- docs/_build/html/searchindex.js | 2 +- docs/_build/html/tools.html | 8 +++--- docs/_build/html/tools/drs_pull.html | 6 ++--- docs/_build/html/tools/indexing.html | 26 ++++++++++---------- docs/_build/html/tools/metadata.html | 10 ++++---- 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 938f75edabf21a2fb73f6c9bb45fb5f75f9539e2..cc0330841e2661df8be3a695771bd1f15bfbe032 100644 GIT binary patch delta 92627 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 R^1tBQAyZdPn>Hll{{hDMGV1^U delta 93224 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 literal 130578 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

j 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 diff --git a/docs/_build/doctrees/tools/indexing.doctree b/docs/_build/doctrees/tools/indexing.doctree index 8c9f9a5495fe9fa0e4caa78b45b3d8a7a9d1aedc..2dbcd31e50f008fe0c24dc2ed68f5a345f1bf02d 100644 GIT binary patch literal 100101 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 literal 101126 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 E|9cpd%m4rY diff --git a/docs/_build/doctrees/tools/metadata.doctree b/docs/_build/doctrees/tools/metadata.doctree index 19f96a3f2cebb3e68f2d9ee24a5096a8d506ddae..41f21d723e13eccbaba17e2f44f6c80bbb7baff8 100644 GIT binary patch literal 35919 zcmeHQYmgjQbzVJoSG$r{58Dz*mTAd0nuUGXG8nwJj9-h8g;ug2MufP!dS`mKyEQXC zp6-!$V_bHq!bp`1Ns0-ChaqL0#Kr{)l^2AB07-xfp}>SBMFF(*7UCVY=D7@v*{wlq$Qr({U9v{lpl|zCGxCXz9W{NUV)%x3%5|$=n^Gd-`cvi-QPA=It!+Wm zP{RNPe%so{M)Z(mYaJU3D4k>Lt9IRN&$Z?aHfs2O)1Ghn;E*_4XIDI;ez;sUJP$AN zJXkks;%P&r)lfg?jq=&1xj<=JY}hvz=~LU!>1L~5H=EPv z-R9ZpMYDc`S2;V`SoSTqp8N@dy=k8qo~{M_Pc=PobJdZxt$Ays5WJGyR{4Sr9j-5$ zl#=AMBm5bN1vFhJXqvOGBF?RsfL&`Z(q4`KuEl@*@!vRDv0lzum=wva2~<6Vst4Gh zU9Xr+kv0;|mst`UMmscZF1iw1-!SZEo4vf|R$5i_W{u=9#W|e{IkhVd8iS(fz94|?DeOQ&grL)>8DT5>bIZN51l@I zmsYatnt(|Wn#SAgrUGc1O0BD%hp_>+9(uAIftOTo15k$eqI)(}gx_k$^xPF0HF3o_ zz&7!mq=iYjNX=^vvTKTPAyHW@u>#zivjJCP8^On914@=CVw;ITt}Xd*GpbA2$WpC3 z<24L25F3!iLvJy;iuncL;#{C&bl_wiS1}`;+XSoDQlQf^M5W07l{~UH5ZQv}4OC4h zxfZkDPWs~=owS)s%he20nJ^V7ugylORCnHiZEMGQ9}=K!v#SfV6s!!FArQtkEVQas zPMx*HMs?pU>rh@kOyCpN(j#q{HF^~!AbNdkkHuvOy6-0ua9IlEl-;@?wb{ya9GAV3 z?OU*`rdD>Vty&%b)P2LQQ!ig^*%b}?uI0h33A0ipscMhk%WjV-Oo#{QEzZLrc=+9b zhY>cqV4Ky7UbSHi6!ru4fl&kh-0_756hTfdC6$w{_m>+XGwV;$4@K^mij(_Akokpx zl@8Q6V{f~$`gAHvurQe<@N;_&gGc^ z$<`C-#LF`RsB_e6--Q^yQ;e!;BM&3nH@gi&zCj{x%}07(%1GsNK^stse=cB?KeYJ_ z5^{W5d&JlvzxaKholdmUfD7B2X+Z241zqcVp(8s+n(U!U^-^p}T64mFKz7NQ?FH(EByy!ey-R=X;n&aV$L_d$_Rdqi+v(W?dUL94 zy}35KA$6cM)h+pg?JZC;x6u!TS&CWNK$8|r9Cm)^HozvkrgW3*iTj^Lo-)~SvGPb7@Jp&eKyXR_4)YklJ(c} zMXvdCmU|)w7SK6IIfUINBlwSDJt4p30QKL} zmN~yvxaO!i8-pm`hMWZ~8W&m8h9uir8Z|1{3n=PVHtbr638~FhpGuqL!?cCnBWOe@ zhIpQm^M2HyY2ci__{x(w`{?Pj^yljE=^8v;bgt!pU&{aP=YLE5?>PVaGWxr^w&-+R zbI%={TOE6JxOaP$QFp&K>Doe^an)3^E|FdO1{$zmyY%;AUT&AR#_ZD9>7%eq1^HHb z_20vSd$&!UM5#XEd=&+Ew@sXMvQ6~BZ4*62ZPQkCzOMyD=G&&3?zXAon%?N#u~Qm1 zQe?a0HfkkBD47nd&1>kS4wLh_?O^nO6{D+Vt1j<}7_wE{C`VCSbqyshWUIyt6SCU2 z>ZOHij@qg#Ac}p++0C9{_Qge(vXsQqoY7fXE{c0DhWP34` zPnv9#T}!Ia7egSAD1nTyjq_Evd{)1|<@&KDVP_w$*y#&Rx2DsQ-o6=4$HI;--nvaf z&BW+FZX8UcLlRvqUGgN9{Qj2NT-LE4qGS8ZE!&t2RdiuZ^rl&Mn-!jPBC({!E_u~E zSo4{O-yi4qnTH=u0*!q!zGh4a6u<0qm_QTI za$wg(nP$~9F(+@D0RVTf4~8fZ6rw?UD34RDXv_yn59LPaR4wyoeYMO>VlCtRItr2V zXZGT%eU{cLuq|8BO7qJa2Qu{Dc%pwgU#7Z+DagsBXnndbTK9t1FCk|S@TM#Z-f@eb z=oJ>tSfynMdIwBQJWolicxNriiW%$oL8BN2{D7YLD1blpI|`7tyRRKiET0}adixpu z&SP_To<4D6cJ7pZV)mZXvnNlT?0wPn<|32SjN1C0mhQ|f4~V;D6Vc&y`2&}{1=4k4 zUOsTSIyMmrNSWOAx{&J|%%X*NE8S+tW31#ahOfNJ-tCnuJsp7g+{p7anMUtNt} zG!PJ(Kfb!|sIg?%S~c1eEVr8ERs&@Z9fOrnQv9?+8gZR~Yfm7i-ZLusP2|cisS@NE z=~^%~u9#Y_Y36M`5ku3=gOnq6nhDpDq*gvoi3wRLOQMuqN#%55Li(R(asoS+L{Aj1 zIXcbU4^hk^XBSIg(KM4pmQ>@(c9zpjDt9KJs9V`I&6JoZKFyR}BWOgZ0@Vk_G_#EQ zyG%1Fi7+r1>4_T{{?xC55xS)B?YZNIw_Gn{AWtr0x^!y_9j!{^y&IZ4iWr*wYWuV| zXCB3RQhv#$vRkXUbx&_Ks}rI37N7CpXW&?;3x~i7&1m`7!8x~XQqm<|X**1Lgtj|) z;1!W#B9rff5A2W5uJ+Gpw}eCEj=9&Z6Wac)iAX$W!3oK&4@Ris)47USwQII-HUoa# zmfvXkoN;o6IEeZQ0+Uh(lX5aViOI3s^d_&r@unLN+;GEnuYC2?jn^Hx?v)1)OjX^* z{S)x5k`qZey*zlT*&>lianeF1uU3pcOK=(7!u@%SdfoMngzqPN?VE1lU*SNbpEZ}^ z99e<%uJ+;IIiv08?YsY0h)kv8jzp0(8oon$@L-+CxASBClQ&M2n(Bul`G4}{ z&X4d}72j6K&6dzy2H^-~ zzT*6(CILqs?-frI{qs~>IZq?u04k+*5+A`wW*zD_+0WKd)a|Ij`HpK~K0wkiuqGDsY(gNip}m{+au?ewfRj zc(WJRT2F9i4jCE7zV(hXY?iQ;cQ|D~+d>O&FZMH=|>PEe6 zxy{I^KX9VW3g?UkcueRblEdR+r(Gic5R!yA5xdfMz5{~U5DzLTBk(pJo=VYN&W1rg z+E*-zd9)Ig^B$CuxqDG8L@IFnCTgswoU2eJr;Ii^n3g}wE{*e`GkAuFlXOf@-bW>g zaH$;U@ae;R$xJh<)o`r~+aTl%;bHF;`yfWR!l;$Ka~#>gY|r@=psyiuW=>I}D?P!Q z`wMDa2a?|#Fo-3d9=2*mkIUW^goE#3(N{`-H}xbx+P1loa)jWZ6}`}zJ?LQMc7wP) ztb!(1M`SnwVvOmFj@8#%Xa7`w8@EJe=~@YHTjSc~q}Fs@UlZX%d`~S%L=gy0lkc=u z;in+@rj^yPDy{MwRUHMmi0A2VV*hi!2+BD_sdqc4@DBvEgRRv{k>yN!9R+R2rWTfH zCDCTBVHuw7Mafn%1IfTQ=l(>|@#Wb>e{ftuW|fnfowVPLGRLFxX`hViph)yUD3~?l zd2-po2DN7%erI$kxI=b3*#4r3P_R#yqSSAi|Nk*G@=c;<{HXngRII?oVM@DXbi4ua5`4!mnMEtXpOnW$Q#!uU zLm^?5I7~t@?l=)*9NzddT4jFGXz&q10^}Wwc>&Bj-Yd!dm|C${p#K*aUI)@UN$` zWFyA4C6wIfjxxRNqD1jx*>kjxwx=5=>z#kPsK|$mOKPE*h zg`@Mxeh&vfxh&yO84*!LQ6dyjbHY6jCC)>P(scNml0-G06z5;>2`T}8|CTc!p9O5= zQB6?>WPK@LRQ>;h)n@A7)2^U*-(!P7x&xo3| z9wr(Jf{OL94mqXtu#_}BWGfeTNtR zsC*U@9t>2*hj9)uxdtW$}hy7l(Sz#P@ZHg7S$9 zCcd+rsO+SD1Nm;ECJo4;7-B%~kU|QOQ_}3pX?oRM$&B40JkdogJwo{U#D<@OEOHhYAA*nP&=fM0@Rc=FUo9a)mX`F-C?@aMJT<&^vvhsY}mOsitsj^ipobT zSQ5wB3_xva@GGV@MI?^|AL4zu7{enGiEBC^VRlA)10Cq&TZm%B|AqhZc^ex$Sk~bs zgwES`{e|HvJ9FUr8Lc#X;>58N(>IK3r|UT94QCNzk&1>+ILeRQuBSp{6B+rvDIVE* z9|^KT_N#`COD+sLZDbTHUM);{mNlp4`Pk}`N5jeU0)yo*k})R>uZwGu^#nahr1+u8`lm!u*~%fJN509)%1+w1 z9(jhSNz)^tAYyu?Lk=l=q$7=5?_az`T~W&ZlGUf0cVI&tDcNm?=A~0CoddMAdexE3 zu)QKh*P4&V?Vf)w`=h1W@42O82YV=04xJI*tE!uV;t?nw-KE>!Z#(mYPmnopJ)3&I z2R+SpIQ#!4Hh^8<#$jc8i-;BTVa9xx5_d<(D24GVr!GI6j3 zPs~>srbZ7hXpN?O4ySBXCa^RN!zxeR;2A3Bf&t$c8e3w$xB(kZCI5(rK zV|-%)V{9*A@F5P>h@ZkSO2-Cpk*Je2GfogoHLaUtO)8aU;;m9`H}wK}Ie&a5hkA!W zrPsv`YR>#|E>TdfzLguNM>tX0N&7aZ$BCLWa~g^vW==b#kYY|d(kONOuIFdplR$dD zlBW<|?*%+jWBnqiW7#lCV?Dci{WW5GSF_X|Y?Vq=l6<&dN$!Fq-`u4;cA7)VrR3k; z93Ci8L(Fd_w@Bx18nW$n4t3u_!6ey2^)TK9^j6TgJmY;$m zJr|YB8lolR*-FAg1c%9sGqU1GQ;Ty@$cIFPsec9n6=CZ9={X8hpA%l3BKjGj+nzYf zN^Ao36Qq9IB6h61+%gh`qNZ2cXNWp`buK3j92jmk>l2tmN5a(UP%mlMKLpoQ>1MUM zk&bg23p1;9b=D<7jOefzaQ}ujO-TwFHsSqLw)Fqg_$P z7Y32ge;3xo9)ErfDYM{rN#mf`jKoKA@ex)28RJT{&HxpYjDx;1uSdusMt&k?p0;!$ zG%p4^l~CsgQJn6|?x38~QanO+I7rUF#bY^RpD=0;e=ANY^eQK3~k|B!^eR995ur)3wOwblR#)K0_WiHx5CHAd*M(n;`}}` zr8oi5>nPUxb_)JdqM-OVB04@JT@p9}{1qoEJ85(grCS#)lkVS*|q>OK}X*0e5{K=NOr*__oF;%J`7hO?kK*K7aIoz2#vi{ z%ny#nk(J%b#8j|%w+5L~P)e^?1*N+Z1?3YJpmZlEDm!TurOq>GmZC8lR}wX8C=JCB zLurQ;Qc#+brjMwiWGUT&`?J*r?we?6rZ0Rl5!H$B?J=b;(=1T@XS z%({gGE8||gmhU%4;niCgchRPLxa1BQ@97CN0g{h$&|p{)kC>y^#gV+NLjZEtl=4M& zy@f<2+0c#X;xZ>VJ89o2w}_fFl!qdUp}a#vDJV}#^O}{SLWwU~dUy2S-9>gCYCE?` zxi?gHh}+N2zy6K?8sgJ+M9?bb!yt151<9`td}Vzqr_ zfQ`yD2vj&S&;sVHHEb+6#5XwjvOUK($v5IgY_=h|9uU`kZwv45h7T3pAzEp(p?i%g zPX7&~cG-|{25iq+TjtmZ7F!XL?7K~rJc8SianPhuYv9L55lKf!BAms~(cmXWO!&2# zZZoC3wCO7<9u!v=vh529iH3uh8Toi*4ckoDh$BKnUxKq@t&KNh2!Xa6IJUD!x08D) za<_P6R!#m!rywO=-sp`QgABnH-w;F7Y`9HCcHvQAbIh*O8JuPvXE`7hE^ux63zM&& zopS5mZ$Z*JTe8sb$>FDcvhoDTBO}Hro?8WXdmzBAg$h`>-)lu1o_d z2f43|e@J9zTZso?&9fk)D!<2fbJeIXwv0s+5~s5%*5bZ*c3E&aM8%{#O;HV9`#r~o zU}_g|O)eyYiz#pc@PfUBC3QB205Dfquh?3gGl8?}TD68ALJ)%GFA$f4#c~7vXATF7 zQW6esYJT;q;hC+9tK+_5q}mE6IM*|=$F6d6l$3q_obA~HqFeNe?HTj91S6z!SauC` zvrTZy_Hb9GIJgw336gP#ZGJKQ4sv=!C5ZUseGxviD6N7f-`F(Hqrt^bKy({F3x;E+E9eUgiSBm9P!q9kf&DU@xNaiZ?Sojn^Ko;HE3%r`+b^ zbemm4DLDa1spHH6G!L!=!40iuWAfVTUIBTIH5bZ>;^~bl{-v^by2_j&d)91D*`~k1 z>wp57w)|QZm5unuJbFGh`q*`Sc>&iqnRDoTO{ni&ho?0lyej z5%f2CHC$yZt}gK)sLS|oev=7$mRmNe5W{@{b=ksM5Ab7biv9*Ea}gr<*;WJhppJn$ z-}WJYp$9GkJ-Dx=z5onJ#ju@Jh1Z%-q_b-T-l}Ve-ngD?C13_YUlnxWWsqQ*CS8KJg^RULP5lcEKE7uYr`nbfamRu_a?yU5m=^>c09;KMcub%Op2C}Q)x5)+U}Bcfi)HbNud2emf_>>CBNj*QP#-W3399qG2Xoa)I zHb=qErN0?hDGLjX77=eqr^$4pnWJy0Bl5TC9JP738ulOl^76#XF!e~R#1UC5&$K;O zKFm|oCwq8BvaH|>Mg`EgWttU{X~9$-$C+>#!|D#-8N7cdF!$E>31|-<{Ds59JrDhb zDx`b0$Gl|^%0|8phXV3m@raAV&J1T{Ic>@Ou14Prgq0pvKX*H2pvuQAi zxJwp;5SVH#EziS(o`s`y-Mm?ADTnPA#t`JPJtYOSqB4{a-_o-XA1W%uwNi+~Z@B%$ z+~K)Hr0BWq_C(~FDMl#Ed?{u^Bv@|B{I0nFK+oL2uPFBtLe86!Bf_tg!QM>9k7$>G z^H225`5&%~bMD+KnZH6YPgX>DAZK!C41d(@ zQO*@ZQ@Kgb+-UG9EauZ;LrV8y>0FNG(TH|@*89?TLPFBcNlz{_&>Hr)RuNIV6r!B3 zqFkwa*>|6xev=${+0KK6s@@%b$;FX7*sT;o(&aG@A(L$nCs)$O^RdRp@HHRSZnW#= ZYO6xS=tUZ@k5=eFykM$Cm~72Y{U5YHY83zg literal 36402 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 p*fObaz!$6z#lnWatLWelcome to Gen3 SDK’s documentation!Indexing Tools
    -
  • Download
      +
    • Download
    • -
    • Index
        +
      • Index
      • -
      • Verify
          +
        • Verify
          • CURRENT_DIR
          • MAX_CONCURRENT_REQUESTS
          • async_verify_object_manifest()
          • @@ -261,7 +261,7 @@

            Welcome to Gen3 SDK’s documentation!Metadata Tools
              -
            • Ingest
                +
              • Ingest
                • COLUMN_TO_USE_AS_GUID
                • GUID_TYPE_FOR_INDEXED_FILE_OBJECT
                • GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT
                • diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index a470ed6b5..175ad7349 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["auth", "file", "index", "indexing", "jobs", "metadata", "object", "query", "submission", "tools", "tools/drs_pull", "tools/indexing", "tools/metadata", "wss"], "filenames": ["auth.rst", "file.rst", "index.rst", "indexing.rst", "jobs.rst", "metadata.rst", "object.rst", "query.rst", "submission.rst", "tools.rst", "tools/drs_pull.rst", "tools/indexing.rst", "tools/metadata.rst", "wss.rst"], "titles": ["Gen3 Auth Helper", "Gen3 File Class", "Welcome to Gen3 SDK\u2019s documentation!", "Gen3 Index Class", "Gen3 Jobs Class", "Gen3 Metadata Class", "Gen3 Object Class", "Gen3 Query Class", "Gen3 Submission Class", "Gen3 Tools", "DRS Download Tools", "Indexing Tools", "Metadata Tools", "Gen3 Workspace Storage"], "terms": {"class": [0, 2, 10, 11, 13], "gen3auth": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "endpoint": [0, 1, 2, 3, 4, 5, 7, 8, 13], "none": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "refresh_fil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "refresh_token": 0, "idp": 0, "client_credenti": 0, "client_scop": 0, "sourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "base": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "authbas": 0, "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "request": [0, 1, 3, 5, 8, 11, 12], "implement": 0, "order": [0, 8], "support": [0, 1, 5, 8, 11], "jwt": 0, "authent": 0, "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13], "access": [0, 1, 3, 7, 10], "token": [0, 10], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "provid": [0, 1, 3, 5, 7, 8, 12], "refresh": [0, 10], "file": [0, 2, 3, 4, 8, 9, 10, 11, 12, 13], "string": [0, 3, 5, 11, 13], "automat": 0, "when": [0, 3, 7, 10, 12], "thei": [0, 10], "expir": [0, 1], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "str": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12], "opt": 0, "The": [0, 1, 2, 3, 5, 8, 10, 11], "contain": [0, 2, 5, 8, 9, 10, 11, 12], "download": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "json": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "web": 0, "option": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "work": [0, 10], "workspac": [0, 2], "default": [0, 1, 3, 7, 8, 11, 12], "env": 0, "gen3_api_kei": 0, "credenti": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "set": [0, 1, 5, 10], "includ": [0, 3], "search": [0, 2, 3], "path": [0, 1, 5, 10, 11, 13], "valu": [0, 1, 3, 5, 7, 10, 11], "doe": [0, 12], "interpret": 0, "wt": [0, 10], "an": [0, 3, 6, 8, 10, 11], "accesstoken": 0, "If": [0, 1, 7, 11, 12], "can": [0, 3, 4, 8, 11, 12], "specifi": [0, 1, 3, 11, 13], "local": [0, 13], "indic": [0, 11], "environ": 0, "fenc": [0, 1], "tupl": [0, 3, 11, 12], "client_id": 0, "client_secret": 0, "oidc": 0, "client": [0, 3], "ha": [0, 11], "grant": 0, "allow": [0, 6, 8, 10, 11, 12], "obtain": [0, 10], "space": [0, 11], "separ": [0, 11], "list": [0, 1, 3, 4, 5, 7, 8, 10, 11, 13], "scope": [0, 1], "user": [0, 10, 12], "data": [0, 1, 3, 5, 7, 8, 10, 11], "openid": 0, "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "point": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "sandbox": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "common": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "while": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "profil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "page": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13], "instal": [0, 2, 11], "crdc": 0, "some": [0, 2], "arbitrari": 0, "kei": [0, 3, 5, 13], "variabl": [0, 7, 8], "rather": 0, "than": [0, 5], "pass": [0, 7, 8, 10], "argument": [0, 13], "constructor": 0, "id": [0, 1, 3, 5, 10, 11], "secret": 0, "note": [0, 3, 11, 12], "should": [0, 8, 11], "never": 0, "hardcod": 0, "http": [0, 7, 11, 12], "datacommon": 0, "o": 0, "gen3_oidc_client_creds_secret": 0, "initi": [0, 10], "follow": [0, 11], "curl": [0, 2], "given": [0, 3, 4, 5, 8, 10, 12, 13], "ex": [0, 11, 12], "return": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "respons": [0, 1, 3, 4, 5], "under": [0, 8, 13], "index": [0, 2, 5, 9], "authz": [0, 1, 2, 3, 9, 10, 11], "map": [0, 11], "get": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 13], "post": [0, 11], "put": 0, "delet": [0, 1, 2, 3, 5, 6, 8, 10, 11], "i": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12], "els": [0, 12], "filenam": [0, 8, 10, 11, 12], "get_access_token": [0, 2], "auto": [0, 2], "within": [0, 2, 9], "5": [0, 5], "minut": 0, "get_access_token_from_wt": [0, 2], "try": 0, "fetch": 0, "namespac": [0, 12], "refresh_access_token": [0, 2], "new": [0, 3], "gen3fil": [1, 2], "auth_provid": [1, 2, 3, 4, 5, 6, 7, 8, 13], "object": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13], "For": [1, 5, 6, 7, 8, 9, 11], "interact": [1, 3, 4, 5, 6, 8, 13], "manag": [1, 5, 10], "featur": [1, 6], "A": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "servic": [1, 3, 4, 5, 6, 8, 11, 12, 13], "presign": 1, "url": [1, 2, 3, 9, 10, 11, 12, 13], "right": 1, "now": [1, 8], "instanc": [1, 3, 6, 7, 8, 9, 10], "auth": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "delete_fil": [1, 2], "guid": [1, 2, 3, 5, 6, 9, 11, 12], "method": [1, 7, 10], "deprec": 1, "delete_file_loc": [1, 2, 6], "instead": [1, 7, 11], "all": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12], "locat": [1, 6], "store": [1, 3, 10], "remov": [1, 6, 11, 13], "its": [1, 3], "record": [1, 3, 5, 7, 8, 11, 12], "indexd": [1, 3, 6, 10, 11, 12], "uuid": [1, 3, 8], "text": [1, 7, 8], "result": [1, 8, 10, 11], "type": [1, 3, 4, 5, 7, 8, 10, 11, 12], "download_singl": [1, 2], "object_id": [1, 2, 9, 10], "singl": [1, 5, 8], "": [1, 4, 8, 10, 11], "uniqu": [1, 5], "get_presigned_url": [1, 2], "protocol": 1, "retriev": [1, 8, 10, 12], "give": 1, "limit": [1, 3, 5, 12], "time": [1, 8, 10, 11], "pick": 1, "avail": [1, 2, 10, 11], "queri": [1, 2, 3, 5, 8, 11, 12], "upload_fil": [1, 2], "file_nam": [1, 2, 3, 9, 10, 11], "expires_in": 1, "bucket": [1, 6], "upload": [1, 2, 3, 8, 13], "author": 1, "storag": [1, 2, 6], "s3": [1, 10, 11], "az": 1, "isn": 1, "t": [1, 5, 11], "int": [1, 3, 5, 7, 8, 10, 11, 12], "amount": [1, 9], "second": [1, 4], "sign": 1, "datetim": [1, 10], "utcnow": 1, "Be": 1, "sure": 1, "posit": [1, 7], "integ": [1, 3, 8], "also": 1, "treat": [1, 5], "max_presigned_url_ttl": 1, "configur": 1, "must": [1, 5], "allowed_data_upload_bucket": 1, "data_upload_bucket": 1, "represent": [1, 3], "document": [1, 3], "upload_file_to_guid": [1, 2], "exist": [1, 3, 5, 6, 9, 12], "readm": 2, "python": [2, 9, 11], "github": [2, 7], "repo": 2, "setup": 2, "inform": [2, 3, 10], "along": 2, "quickstart": 2, "script": 2, "more": [2, 5, 7, 9, 10], "detail": [2, 7, 10], "about": [2, 3], "variou": 2, "function": [2, 3, 4, 5, 9, 10, 11, 12], "mostli": 2, "docstr": 2, "code": [2, 8], "helper": 2, "gen3index": [2, 3], "async_create_record": [2, 3], "async_get_record": [2, 3], "async_get_records_from_checksum": [2, 3], "async_get_records_on_pag": [2, 3], "async_get_with_param": [2, 3], "async_query_url": [2, 3], "async_update_record": [2, 3], "create_blank": [2, 3], "create_new_vers": [2, 3], "create_record": [2, 3], "delete_record": [2, 3, 8], "get_all_record": [2, 3], "get_guids_prefix": [2, 3], "get_latest_vers": [2, 3], "get_record": [2, 3], "get_record_doc": [2, 3], "get_records_on_pag": [2, 3], "get_stat": [2, 3], "get_url": [2, 3], "get_valid_guid": [2, 3], "get_vers": [2, 3, 4, 5], "get_with_param": [2, 3], "is_healthi": [2, 3, 4, 5], "query_url": [2, 3], "update_blank": [2, 3], "update_record": [2, 3], "job": 2, "gen3job": [2, 4, 10], "async_run_job_and_wait": [2, 4], "create_job": [2, 4], "get_output": [2, 4], "get_statu": [2, 4], "list_job": [2, 4], "metadata": [2, 3, 6, 9, 11], "gen3metadata": [2, 5], "async_cr": [2, 5], "async_create_alias": [2, 5], "async_delete_alia": [2, 5], "async_delete_alias": [2, 5], "async_get": [2, 5], "async_get_alias": [2, 5], "async_upd": [2, 5], "async_update_alias": [2, 5], "batch_creat": [2, 5], "creat": [2, 3, 4, 5, 6, 8, 10, 11], "create_alias": [2, 5], "create_index_key_path": [2, 5], "delete_alia": [2, 5], "delete_alias": [2, 5], "delete_index_key_path": [2, 5], "get_alias": [2, 5], "get_index_key_path": [2, 5], "updat": [2, 3, 5, 10, 11], "update_alias": [2, 5], "gen3object": [2, 6], "delete_object": [2, 6], "gen3queri": [2, 7], "graphql_queri": [2, 7], "raw_data_download": [2, 7], "submiss": 2, "gen3submiss": [2, 8], "create_program": [2, 8], "create_project": [2, 8], "delete_nod": [2, 8], "delete_program": [2, 8], "delete_project": [2, 8], "export_nod": [2, 8], "export_record": [2, 8], "get_dictionary_al": [2, 8], "get_dictionary_nod": [2, 8], "get_graphql_schema": [2, 8], "get_program": [2, 8], "get_project_dictionari": [2, 8], "get_project_manifest": [2, 8], "get_project": [2, 8], "open_project": [2, 8], "submit_fil": [2, 8], "submit_record": [2, 8], "tool": 2, "dr": [2, 9], "downloadmanag": [2, 9, 10], "cache_hosts_wts_token": [2, 9, 10], "get_fresh_token": [2, 9, 10], "resolve_object": [2, 9, 10], "user_access": [2, 9, 10], "downloadstatu": [2, 9, 10], "statu": [2, 4, 9, 10], "start_tim": [2, 9, 10], "end_tim": [2, 9, 10], "object_typ": [2, 9, 10], "hostnam": [2, 9, 10], "file_s": [2, 9, 10, 11], "updated_tim": [2, 9, 10], "created_tim": [2, 9, 10], "access_method": [2, 9, 10], "children": [2, 9, 10], "_manag": [2, 9, 10], "pprint": [2, 9, 10], "manifest": [2, 8, 9, 10, 11, 12], "md5sum": [2, 9, 10], "commons_url": [2, 9, 10, 11, 12], "create_object_list": [2, 9, 10], "load": [2, 9, 10], "load_manifest": [2, 9, 10], "download_drs_object": [], "download_files_in_drs_manifest": [2, 9, 10], "list_access_in_drs_manifest": [2, 9, 10], "list_drs_object": [2, 9, 10], "list_files_in_drs_manifest": [2, 9, 10], "current_dir": [2, 9, 11], "indexd_record_page_s": [2, 9, 11], "max_concurrent_request": [2, 9, 11, 12], "tmp_folder": [2, 9, 11], "async_download_object_manifest": [2, 9, 11], "size": [2, 3, 9, 10, 11], "md5": [2, 3, 9, 11], "acl": [2, 3, 9, 11], "prev_guid": [2, 9, 11], "threadcontrol": [2, 9, 11], "delete_all_guid": [2, 9, 11], "index_object_manifest": [2, 9, 11], "verifi": [2, 9], "async_verify_object_manifest": [2, 9, 11], "ingest": [2, 9], "column_to_use_as_guid": [2, 9, 12], "guid_type_for_indexed_file_object": [2, 9, 12], "guid_type_for_non_indexed_file_object": [2, 9, 12], "async_ingest_metadata_manifest": [2, 9, 12], "async_query_urls_from_indexd": [2, 9, 12], "gen3wsstorag": [2, 13], "copi": [2, 13], "download_url": [2, 13], "l": [2, 13], "ls_path": [2, 13], "rm": [2, 13], "rm_path": [2, 13], "upload_url": [2, 13], "modul": [2, 10, 11], "service_loc": [3, 4, 5], "public": [3, 5], "read": [3, 5, 11], "onli": [3, 5, 7, 8, 10, 11], "necessari": [3, 5], "basic": [3, 11, 12], "cred": 3, "async": [3, 4, 5, 9, 11, 12], "hash": [3, 11], "did": 3, "baseid": 3, "urls_metadata": 3, "version": [3, 4, 5], "_ssl": [3, 4, 5], "asynchron": [3, 4, 5], "dict": [3, 4, 5, 10, 11, 12], "eg": 3, "ab167e49d25b488939b1ede42752458b": 3, "associ": [3, 5], "made": 3, "where": [3, 5, 11, 12], "you": [3, 8, 11], "control": 3, "rbac": 3, "name": [3, 4, 8, 10, 11, 12, 13], "addit": [3, 5, 10, 11], "entri": [3, 11], "attach": [3, 5], "each": [3, 8, 10, 11], "group": 3, "previou": [3, 11], "checksum": [3, 10], "checksum_typ": 3, "match": [3, 5, 12], "param": [3, 5, 8, 10], "correspond": 3, "suppli": 3, "need": [3, 7, 10, 11], "handl": [3, 10], "hash_typ": 3, "whether": [3, 4, 5, 8, 11, 12], "ssl": [3, 4, 5], "pattern": [3, 12], "against": [3, 7, 8, 11, 12], "kwarg": [3, 4, 5], "bodi": 3, "dictionari": [3, 4, 5, 7, 8], "format": [3, 5, 8, 11], "blank": 3, "add": [3, 5], "sinc": 3, "content": [3, 13], "immut": 3, "want": [3, 8], "chang": [3, 11], "That": 3, "field": [3, 5, 7, 11, 12], "old": 3, "ad": 3, "least": 3, "one": [3, 5, 10, 11], "suffici": 3, "good": 3, "idea": 3, "number": [3, 7, 8, 11, 12], "noth": [3, 6], "dist_resolut": 3, "true": [3, 4, 5, 6, 7, 8, 10, 11, 12], "alia": [3, 5], "distribut": 3, "identifi": [3, 5, 9, 11], "boolean": 3, "we": [3, 11], "pagin": 3, "fals": [3, 5, 6, 10, 11], "start": [3, 4, 7, 8, 10], "prefix": 3, "rtype": 3, "has_vers": 3, "latest": 3, "exclud": 3, "without": [3, 5], "repres": [3, 5, 10], "info": [3, 11], "algorithm": 3, "count": 3, "valid": [3, 7], "file_st": 3, "like": [3, 5, 9, 11, 12], "signpost": 3, "healthi": [3, 4, 5], "rev": 3, "revis": 3, "simpl": 3, "consist": 3, "mechan": 3, "dispatch": 4, "job_nam": 4, "job_input": 4, "wait": 4, "output": [4, 5, 11, 12], "Will": [4, 7, 10], "sleep": 4, "linear": 4, "delai": 4, "until": [4, 10], "done": 4, "1": [4, 5, 8, 10, 11], "global": [4, 5], "input": [4, 10, 11], "job_id": 4, "previous": 4, "complet": [4, 11], "bool": [4, 5, 8, 10, 11, 12], "md": [5, 7, 10, 12], "admin_endpoint_suffix": 5, "admin": [5, 11], "alias": 5, "overwrit": 5, "what": 5, "end": [5, 10], "up": [5, 9], "blob": [5, 7], "asyncron": 5, "altern": [5, 11], "merg": 5, "AND": 5, "descript": 5, "metadata_list": 5, "specif": [5, 8, 11, 12], "expect": [5, 9, 11], "anoth": 5, "databas": 5, "return_full_metadata": 5, "10": [5, 7, 11], "offset": [5, 7], "0": [5, 7, 8, 11], "use_agg_md": 5, "off": 5, "logic": [5, 12], "filter": [5, 7], "b": [5, 11], "2": [5, 11], "have": [5, 11], "ar": [5, 7, 8, 9, 10, 11], "alwai": 5, "nest": 5, "c": [5, 11], "3": [5, 11], "same": [5, 11, 13], "whose": 5, "ani": [5, 10, 11], "But": 5, "differ": 5, "33": 5, "d": 5, "4": [5, 11], "e": [5, 10], "won": 5, "333": 5, "defin": [5, 8, 10], "api": [5, 8, 11], "just": [5, 11, 12], "max": 5, "num": 5, "OR": 5, "level": 6, "current": [6, 8, 10], "system": [6, 7, 8, 9], "elasticsearch": 7, "query_str": 7, "execut": [7, 8, 11], "graphql": [7, 8], "query_txt": [7, 8], "syntax": 7, "see": [7, 10, 11], "com": 7, "uc": 7, "cdi": 7, "guppi": 7, "master": 7, "doc": [7, 10], "data_typ": 7, "my_index": 7, "my_field": 7, "first": [7, 8], "filter_object": 7, "sort_object": 7, "verbos": [7, 8], "row": [7, 8, 11, 12], "sort": 7, "equal": 7, "respect": 7, "complex": 7, "appli": 7, "One": 7, "unaccess": 7, "regular": 7, "tier": 7, "mode": 7, "subject": [7, 8], "50": 7, "vital_statu": 7, "submitter_id": 7, "aliv": 7, "asc": 7, "sort_field": 7, "raw": [7, 11], "project_id": [7, 8], "my_program": 7, "my_project": 7, "submit": [8, 11], "export": [8, 10], "sheepdog": 8, "through": [8, 11], "peregrin": 8, "sub": 8, "program": [8, 11], "project": [8, 11], "dcf": 8, "node_nam": 8, "batch_siz": 8, "100": [8, 11], "node": 8, "how": [8, 11], "mani": [8, 11], "print": [8, 10], "progress": [8, 10], "log": [8, 10, 11, 12], "ccle": 8, "demograph": 8, "ordered_node_list": 8, "revers": 8, "graph": 8, "experi": 8, "empti": [8, 11], "uuid1": 8, "uuid2": 8, "node_typ": 8, "fileformat": 8, "which": [8, 10], "belong": 8, "either": 8, "tsv": [8, 11, 12], "screen": 8, "sampl": [8, 10], "ccle_sample_nod": 8, "d70b41b9": 8, "6f90": 8, "4714": 8, "8420": 8, "e043ab8b77b9": 8, "ccle_one_record": 8, "entir": 8, "schema": 8, "run": [8, 11], "introspect": 8, "regist": 8, "mark": 8, "open": [8, 10, 11], "mean": 8, "etc": 8, "max_tri": 8, "retri": 8, "fail": [8, 10], "chunk_siz": 8, "30": 8, "row_offset": 8, "spreadsheet": 8, "multipl": [8, 11], "csv": [8, 11, 12], "xlsx": 8, "worksheet": 8, "skip": 8, "data_spreadsheet": 8, "arrai": 8, "action": [9, 11], "These": 9, "broken": 9, "broad": 9, "categori": 9, "task": 9, "relat": 9, "persist": 9, "Such": 9, "mai": [9, 11], "involv": 9, "assign": 9, "everi": [9, 11], "alreadi": 9, "larg": 9, "most": 9, "util": 9, "capabl": 9, "make": [9, 11], "effici": 9, "main": 10, "datafil": 10, "manifest_1": 10, "my_common": 10, "org": 10, "gen3": [10, 11, 12], "my_credenti": 10, "howto": 10, "drsdownload": 10, "drs_download": 10, "download_list": 10, "show_progress": 10, "assist": 10, "minimum": 10, "interest": 10, "object_list": 10, "host": 10, "It": 10, "possibl": 10, "save_directori": 10, "unpack_packag": 10, "delete_unpacked_packag": 10, "directori": [10, 11], "call": [10, 13], "case": 10, "error": [10, 11, 12], "continu": 10, "save": 10, "show": 10, "bar": 10, "disabl": 10, "unpack": 10, "packag": 10, "after": 10, "them": [10, 11], "drs_hostnam": 10, "known": 10, "otherwis": 10, "success": 10, "resolv": 10, "permiss": 10, "wai": 10, "determin": [10, 11, 12], "reason": 10, "pend": 10, "objectid": 10, "datamanag": 10, "occur": 10, "attribut": [10, 11], "drsobjecttyp": 10, "unknown": 10, "factori": 10, "popul": [10, 12], "server": 10, "requir": 10, "byte": 10, "timestamp": 10, "last": 10, "g": 10, "child": 10, "bundl": 10, "self": 10, "indent": 10, "pretti": 10, "In": 10, "similar": 10, "linux": 10, "tree": 10, "command": [10, 11], "typic": 10, "discoveri": 10, "cach": 10, "files": 10, "static": 10, "bownload": 10, "successfulli": 10, "pars": [10, 11, 12, 13], "output_dir": 10, "conveni": 10, "infil": 10, "wrapper": 10, "cli": 10, "process": 11, "coroutin": 11, "asyncio": [11, 12], "librari": 11, "comma": 11, "header": 11, "download_manifest": 11, "per": [11, 12], "maximum": [11, 12], "desir": 11, "concurr": [11, 12], "across": 11, "thread": 11, "folder": 11, "place": 11, "temporari": 11, "write": 11, "safe": 11, "so": 11, "To": 11, "workaround": 11, "concat": 11, "output_filenam": [11, 12], "num_process": 11, "24": [11, 12], "input_manifest": 11, "python_subprocess_command": 11, "root": [11, 12], "domain": [11, 12], "live": [11, 12], "parallel": 11, "hit": 11, "total": 11, "help": 11, "everyth": 11, "attempt": 11, "By": 11, "someth": 11, "maco": 11, "x": 11, "python3": 11, "tab": 11, "session": 11, "column": [11, 12], "shown": 11, "below": 11, "255e396f": 11, "f1f8": 11, "11e9": 11, "9a07": 11, "0a80fada099c": 11, "473d83400bc1bc9dc635e334faddf33c": 11, "363455714": 11, "pdcdatastor": 11, "test1": 11, "0a80fada098c": 11, "473d83400bc1bc9dc635e334faddd33c": 11, "343434344": 11, "test2": 11, "0a80fada097c": 11, "473d83400bc1bc9dc635e334fadd433c": 11, "543434443": 11, "phs0001": 11, "phs0002": 11, "test3": 11, "0a80fada096c": 11, "test4": 11, "0a80fada010c": 11, "473d83400bc1bc9dc635e334fadde33c": 11, "test5": 11, "index_manifest": 11, "usag": 11, "py": 11, "giangb": 11, "planx": 11, "pla": 11, "net": 11, "manifest_fil": [11, 12], "path_to_manifest": 11, "replace_url": 11, "thread_num": 11, "api_kei": 11, "processed_fil": 11, "num_total_fil": 11, "synchron": 11, "warn": 11, "IF": 11, "know": 11, "THE": 11, "implic": 11, "manifest_file_delimit": [11, 12], "submit_additional_metadata_column": 11, "force_metadata_columns_even_if_empti": 11, "loop": 11, "password": [11, 12], "flag": 11, "replac": 11, "delimit": 11, "forc": 11, "creation": 11, "even": 11, "enabl": 11, "illustr": 11, "columna": 11, "columnb": 11, "columnc": 11, "dataa": 11, "datab": 11, "guid_exampl": 11, "md5_hash": 11, "fieldnam": 11, "There": 11, "those": 11, "abov": 11, "overrid": [11, 12], "assum": 11, "behavior": 11, "simpli": 11, "manifest_row_pars": [11, 12], "custom": 11, "import": 11, "verify_manifest": 11, "def": 11, "_get_authz_from_row": 11, "strip": 11, "parser": [11, 12], "verify_object_manifest": 11, "verif": 11, "error_nam": 11, "value_from_manifest": 11, "actual": 11, "value_from_indexd": 11, "93d9af72": 11, "b0f1": 11, "450c": 11, "a5c6": 11, "7d3d8d2083b4": 11, "dev": 11, "test": 11, "_get_acl_from_row": 11, "_get_file_name_from_row": 11, "_get_file_size_from_row": 11, "_get_guid_from_row": 11, "_get_md5_from_row": 11, "_get_urls_from_row": 11, "1692675811": [], "9771066": [], "indexd_field": [11, 12], "func_to_parse_row": [11, 12], "delimet": [11, 12], "metdata": 12, "ingest_manifest": 12, "NOT": 12, "guid_from_fil": 12, "_get_guid_for_row": 12, "indexed_file_object_guid": 12, "_query_for_associated_indexd_record_guid": 12, "guid_for_row": 12, "elsewher": 12, "metadata_sourc": 12, "1692675812": [], "3144128": [], "get_guid_from_fil": 12, "metadata_typ": 12, "dbgap": 12, "usual": 12, "fill": 12, "_guid_typ": 12, "is_indexed_file_object": 12, "lock": 12, "semaphor": 12, "semaphon": 12, "ammount": 12, "connect": 12, "wss": 13, "src_urlstr": 13, "dest_urlstr": 13, "appropri": 13, "src_w": 13, "src_wskei": 13, "dest_path": 13, "disk": 13, "w": 13, "wskei": 13, "ws_urlstr": 13, "form": 13, "src_path": 13, "dest_w": 13, "dest_wskei": 13, "1692676927": [], "2291234": [], "6143494": [], "1692716275": [], "1734753": [], "577429": [], "1692716527": [], "4222114": [], "9511294": [], "1692717039": [], "3338752": [], "744264": [], "1692741377": [], "0982177": [], "4559627": [], "1692743380": [], "4060478": [], "7860734": [], "1692743691": [], "983341": [], "1692743692": [], "4543839": [], "1692825679": [], "249731": [], "5510318": [], "1692886743": [11, 12], "381985": 11, "8074749": 12}, "objects": {"gen3.auth": [[0, 0, 1, "", "Gen3Auth"]], "gen3.auth.Gen3Auth": [[0, 1, 1, "", "curl"], [0, 1, 1, "", "get_access_token"], [0, 1, 1, "", "get_access_token_from_wts"], [0, 1, 1, "", "refresh_access_token"]], "gen3.file": [[1, 0, 1, "", "Gen3File"]], "gen3.file.Gen3File": [[1, 1, 1, "", "delete_file"], [1, 1, 1, "", "delete_file_locations"], [1, 1, 1, "", "download_single"], [1, 1, 1, "", "get_presigned_url"], [1, 1, 1, "", "upload_file"], [1, 1, 1, "", "upload_file_to_guid"]], "gen3.index": [[3, 0, 1, "", "Gen3Index"]], "gen3.index.Gen3Index": [[3, 1, 1, "", "async_create_record"], [3, 1, 1, "", "async_get_record"], [3, 1, 1, "", "async_get_records_from_checksum"], [3, 1, 1, "", "async_get_records_on_page"], [3, 1, 1, "", "async_get_with_params"], [3, 1, 1, "", "async_query_urls"], [3, 1, 1, "", "async_update_record"], [3, 1, 1, "", "create_blank"], [3, 1, 1, "", "create_new_version"], [3, 1, 1, "", "create_record"], [3, 1, 1, "", "delete_record"], [3, 1, 1, "", "get"], [3, 1, 1, "", "get_all_records"], [3, 1, 1, "", "get_guids_prefix"], [3, 1, 1, "", "get_latest_version"], [3, 1, 1, "", "get_record"], [3, 1, 1, "", "get_record_doc"], [3, 1, 1, "", "get_records"], [3, 1, 1, "", "get_records_on_page"], [3, 1, 1, "", "get_stats"], [3, 1, 1, "", "get_urls"], [3, 1, 1, "", "get_valid_guids"], [3, 1, 1, "", "get_version"], [3, 1, 1, "", "get_versions"], [3, 1, 1, "", "get_with_params"], [3, 1, 1, "", "is_healthy"], [3, 1, 1, "", "query_urls"], [3, 1, 1, "", "update_blank"], [3, 1, 1, "", "update_record"]], "gen3.jobs": [[4, 0, 1, "", "Gen3Jobs"]], "gen3.jobs.Gen3Jobs": [[4, 1, 1, "", "async_run_job_and_wait"], [4, 1, 1, "", "create_job"], [4, 1, 1, "", "get_output"], [4, 1, 1, "", "get_status"], [4, 1, 1, "", "get_version"], [4, 1, 1, "", "is_healthy"], [4, 1, 1, "", "list_jobs"]], "gen3.metadata": [[5, 0, 1, "", "Gen3Metadata"]], "gen3.metadata.Gen3Metadata": [[5, 1, 1, "", "async_create"], [5, 1, 1, "", "async_create_aliases"], [5, 1, 1, "", "async_delete_alias"], [5, 1, 1, "", "async_delete_aliases"], [5, 1, 1, "", "async_get"], [5, 1, 1, "", "async_get_aliases"], [5, 1, 1, "", "async_update"], [5, 1, 1, "", "async_update_aliases"], [5, 2, 1, "", "auth_provider"], [5, 1, 1, "", "batch_create"], [5, 1, 1, "", "create"], [5, 1, 1, "", "create_aliases"], [5, 1, 1, "", "create_index_key_path"], [5, 1, 1, "", "delete"], [5, 1, 1, "", "delete_alias"], [5, 1, 1, "", "delete_aliases"], [5, 1, 1, "", "delete_index_key_path"], [5, 2, 1, "", "endpoint"], [5, 1, 1, "", "get"], [5, 1, 1, "", "get_aliases"], [5, 1, 1, "", "get_index_key_paths"], [5, 1, 1, "", "get_version"], [5, 1, 1, "", "is_healthy"], [5, 1, 1, "", "query"], [5, 1, 1, "", "update"], [5, 1, 1, "", "update_aliases"]], "gen3.object": [[6, 0, 1, "", "Gen3Object"]], "gen3.object.Gen3Object": [[6, 1, 1, "", "delete_object"]], "gen3.query": [[7, 0, 1, "", "Gen3Query"]], "gen3.query.Gen3Query": [[7, 1, 1, "", "graphql_query"], [7, 1, 1, "", "query"], [7, 1, 1, "", "raw_data_download"]], "gen3.submission": [[8, 0, 1, "", "Gen3Submission"]], "gen3.submission.Gen3Submission": [[8, 1, 1, "", "create_program"], [8, 1, 1, "", "create_project"], [8, 1, 1, "", "delete_node"], [8, 1, 1, "", "delete_nodes"], [8, 1, 1, "", "delete_program"], [8, 1, 1, "", "delete_project"], [8, 1, 1, "", "delete_record"], [8, 1, 1, "", "delete_records"], [8, 1, 1, "", "export_node"], [8, 1, 1, "", "export_record"], [8, 1, 1, "", "get_dictionary_all"], [8, 1, 1, "", "get_dictionary_node"], [8, 1, 1, "", "get_graphql_schema"], [8, 1, 1, "", "get_programs"], [8, 1, 1, "", "get_project_dictionary"], [8, 1, 1, "", "get_project_manifest"], [8, 1, 1, "", "get_projects"], [8, 1, 1, "", "open_project"], [8, 1, 1, "", "query"], [8, 1, 1, "", "submit_file"], [8, 1, 1, "", "submit_record"]], "gen3": [[9, 3, 0, "-", "tools"]], "gen3.tools.download": [[10, 3, 0, "-", "drs_download"]], "gen3.tools.download.drs_download": [[10, 0, 1, "", "DownloadManager"], [10, 0, 1, "", "DownloadStatus"], [10, 0, 1, "", "Downloadable"], [10, 0, 1, "", "Manifest"], [10, 4, 1, "", "download_files_in_drs_manifest"], [10, 4, 1, "", "list_access_in_drs_manifest"], [10, 4, 1, "", "list_drs_object"], [10, 4, 1, "", "list_files_in_drs_manifest"]], "gen3.tools.download.drs_download.DownloadManager": [[10, 1, 1, "", "cache_hosts_wts_tokens"], [10, 1, 1, "", "download"], [10, 1, 1, "", "get_fresh_token"], [10, 1, 1, "", "resolve_objects"], [10, 1, 1, "", "user_access"]], "gen3.tools.download.drs_download.DownloadStatus": [[10, 2, 1, "", "end_time"], [10, 2, 1, "", "start_time"], [10, 2, 1, "", "status"]], "gen3.tools.download.drs_download.Downloadable": [[10, 2, 1, "", "_manager"], [10, 2, 1, "", "access_methods"], [10, 2, 1, "", "children"], [10, 2, 1, "", "created_time"], [10, 1, 1, "", "download"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 2, 1, "", "hostname"], [10, 2, 1, "", "object_id"], [10, 2, 1, "", "object_type"], [10, 1, 1, "", "pprint"], [10, 2, 1, "", "updated_time"]], "gen3.tools.download.drs_download.Manifest": [[10, 2, 1, "", "commons_url"], [10, 1, 1, "", "create_object_list"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 1, 1, "", "load"], [10, 1, 1, "", "load_manifest"], [10, 2, 1, "", "md5sum"], [10, 2, 1, "", "object_id"]], "gen3.tools.indexing": [[11, 3, 0, "-", "download_manifest"], [11, 3, 0, "-", "index_manifest"], [11, 3, 0, "-", "verify_manifest"]], "gen3.tools.indexing.download_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "INDEXD_RECORD_PAGE_SIZE"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 2, 1, "", "TMP_FOLDER"], [11, 4, 1, "", "async_download_object_manifest"]], "gen3.tools.indexing.index_manifest": [[11, 2, 1, "", "ACLS"], [11, 2, 1, "", "AUTHZ"], [11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "GUID"], [11, 2, 1, "", "MD5"], [11, 2, 1, "", "PREV_GUID"], [11, 2, 1, "", "SIZE"], [11, 0, 1, "", "ThreadControl"], [11, 2, 1, "", "URLS"], [11, 4, 1, "", "delete_all_guids"], [11, 4, 1, "", "index_object_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 4, 1, "", "async_verify_object_manifest"]], "gen3.tools.metadata": [[12, 3, 0, "-", "ingest_manifest"]], "gen3.tools.metadata.ingest_manifest": [[12, 2, 1, "", "COLUMN_TO_USE_AS_GUID"], [12, 2, 1, "", "GUID_TYPE_FOR_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [12, 4, 1, "", "async_ingest_metadata_manifest"], [12, 4, 1, "", "async_query_urls_from_indexd"]], "gen3.wss": [[13, 0, 1, "", "Gen3WsStorage"]], "gen3.wss.Gen3WsStorage": [[13, 1, 1, "", "copy"], [13, 1, 1, "", "download"], [13, 1, 1, "", "download_url"], [13, 1, 1, "", "ls"], [13, 1, 1, "", "ls_path"], [13, 1, 1, "", "rm"], [13, 1, 1, "", "rm_path"], [13, 1, 1, "", "upload"], [13, 1, 1, "", "upload_url"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:module", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "auth": 0, "helper": 0, "file": 1, "class": [1, 3, 4, 5, 6, 7, 8], "welcom": 2, "sdk": 2, "": 2, "document": 2, "indic": 2, "tabl": 2, "index": [3, 11], "job": 4, "metadata": [5, 12], "object": 6, "queri": 7, "submiss": 8, "tool": [9, 10, 11, 12], "dr": 10, "download": [10, 11], "verifi": 11, "ingest": 12, "workspac": 13, "storag": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Gen3 Auth Helper": [[0, "gen3-auth-helper"]], "Gen3 File Class": [[1, "gen3-file-class"]], "Welcome to Gen3 SDK\u2019s documentation!": [[2, "welcome-to-gen3-sdk-s-documentation"]], "Indices and tables": [[2, "indices-and-tables"]], "Gen3 Index Class": [[3, "gen3-index-class"]], "Gen3 Jobs Class": [[4, "gen3-jobs-class"]], "Gen3 Metadata Class": [[5, "gen3-metadata-class"]], "Gen3 Object Class": [[6, "gen3-object-class"]], "Gen3 Query Class": [[7, "gen3-query-class"]], "Gen3 Submission Class": [[8, "gen3-submission-class"]], "Gen3 Tools": [[9, "gen3-tools"]], "DRS Download Tools": [[10, "drs-download-tools"]], "Indexing Tools": [[11, "indexing-tools"]], "Download": [[11, "download"]], "Index": [[11, "index"]], "Verify": [[11, "verify"]], "Metadata Tools": [[12, "metadata-tools"]], "Ingest": [[12, "ingest"]], "Gen3 Workspace Storage": [[13, "gen3-workspace-storage"]]}, "indexentries": {"gen3auth (class in gen3.auth)": [[0, "gen3.auth.Gen3Auth"]], "curl() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.curl"]], "get_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token"]], "get_access_token_from_wts() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token_from_wts"]], "refresh_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.refresh_access_token"]], "gen3file (class in gen3.file)": [[1, "gen3.file.Gen3File"]], "delete_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file"]], "delete_file_locations() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file_locations"]], "download_single() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.download_single"]], "get_presigned_url() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.get_presigned_url"]], "upload_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file"]], "upload_file_to_guid() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file_to_guid"]], "gen3index (class in gen3.index)": [[3, "gen3.index.Gen3Index"]], "async_create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_create_record"]], "async_get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_record"]], "async_get_records_from_checksum() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_from_checksum"]], "async_get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_on_page"]], "async_get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_with_params"]], "async_query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_query_urls"]], "async_update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_update_record"]], "create_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_blank"]], "create_new_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_new_version"]], "create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_record"]], "delete_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.delete_record"]], "get() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get"]], "get_all_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_all_records"]], "get_guids_prefix() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_guids_prefix"]], "get_latest_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_latest_version"]], "get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record"]], "get_record_doc() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record_doc"]], "get_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records"]], "get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records_on_page"]], "get_stats() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_stats"]], "get_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_urls"]], "get_valid_guids() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_valid_guids"]], "get_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_version"]], "get_versions() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_versions"]], "get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_with_params"]], "is_healthy() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.is_healthy"]], "query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.query_urls"]], "update_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_blank"]], "update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_record"]], "gen3jobs (class in gen3.jobs)": [[4, "gen3.jobs.Gen3Jobs"]], "async_run_job_and_wait() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.async_run_job_and_wait"]], "create_job() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.create_job"]], "get_output() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_output"]], "get_status() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_status"]], "get_version() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_version"]], "is_healthy() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.is_healthy"]], "list_jobs() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.list_jobs"]], "gen3metadata (class in gen3.metadata)": [[5, "gen3.metadata.Gen3Metadata"]], "async_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create"]], "async_create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create_aliases"]], "async_delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_alias"]], "async_delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_aliases"]], "async_get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get"]], "async_get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get_aliases"]], "async_update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update"]], "async_update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update_aliases"]], "auth_provider (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.auth_provider"]], "batch_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.batch_create"]], "create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create"]], "create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_aliases"]], "create_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_index_key_path"]], "delete() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete"]], "delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_alias"]], "delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_aliases"]], "delete_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_index_key_path"]], "endpoint (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.endpoint"]], "get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get"]], "get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_aliases"]], "get_index_key_paths() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_index_key_paths"]], "get_version() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_version"]], "is_healthy() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.is_healthy"]], "query() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.query"]], "update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update"]], "update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update_aliases"]], "gen3object (class in gen3.object)": [[6, "gen3.object.Gen3Object"]], "delete_object() (gen3.object.gen3object method)": [[6, "gen3.object.Gen3Object.delete_object"]], "gen3query (class in gen3.query)": [[7, "gen3.query.Gen3Query"]], "graphql_query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.graphql_query"]], "query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.query"]], "raw_data_download() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.raw_data_download"]], "gen3submission (class in gen3.submission)": [[8, "gen3.submission.Gen3Submission"]], "create_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_program"]], "create_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_project"]], "delete_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_node"]], "delete_nodes() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_nodes"]], "delete_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_program"]], "delete_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_project"]], "delete_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_record"]], "delete_records() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_records"]], "export_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_node"]], "export_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_record"]], "get_dictionary_all() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_all"]], "get_dictionary_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_node"]], "get_graphql_schema() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_graphql_schema"]], "get_programs() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_programs"]], "get_project_dictionary() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_dictionary"]], "get_project_manifest() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_manifest"]], "get_projects() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_projects"]], "open_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.open_project"]], "query() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.query"]], "submit_file() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_file"]], "submit_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_record"]], "gen3.tools": [[9, "module-gen3.tools"]], "module": [[9, "module-gen3.tools"], [10, "module-gen3.tools.download.drs_download"], [11, "module-gen3.tools.indexing.download_manifest"], [11, "module-gen3.tools.indexing.index_manifest"], [11, "module-gen3.tools.indexing.verify_manifest"], [12, "module-gen3.tools.metadata.ingest_manifest"]], "downloadmanager (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadManager"]], "downloadstatus (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadStatus"]], "downloadable (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Downloadable"]], "manifest (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Manifest"]], "_manager (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable._manager"]], "access_methods (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.access_methods"]], "cache_hosts_wts_tokens() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.cache_hosts_wts_tokens"]], "children (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.children"]], "commons_url (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.commons_url"]], "create_object_list() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.create_object_list"]], "created_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.created_time"]], "download() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.download"]], "download() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.download"]], "download_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.download_files_in_drs_manifest"]], "end_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.end_time"]], "file_name (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_name"]], "file_name (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_name"]], "file_size (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_size"]], "file_size (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_size"]], "gen3.tools.download.drs_download": [[10, "module-gen3.tools.download.drs_download"]], "get_fresh_token() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.get_fresh_token"]], "hostname (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.hostname"]], "list_access_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_access_in_drs_manifest"]], "list_drs_object() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_drs_object"]], "list_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_files_in_drs_manifest"]], "load() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load"]], "load_manifest() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load_manifest"]], "md5sum (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.md5sum"]], "object_id (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_id"]], "object_id (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.object_id"]], "object_type (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_type"]], "pprint() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.pprint"]], "resolve_objects() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.resolve_objects"]], "start_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.start_time"]], "status (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.status"]], "updated_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.updated_time"]], "user_access() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.user_access"]], "acls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ACLS"]], "authz (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.AUTHZ"]], "current_dir (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.CURRENT_DIR"]], "guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.GUID"]], "indexd_record_page_size (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.INDEXD_RECORD_PAGE_SIZE"]], "max_concurrent_requests (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.MAX_CONCURRENT_REQUESTS"]], "max_concurrent_requests (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.MAX_CONCURRENT_REQUESTS"]], "md5 (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.MD5"]], "prev_guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.PREV_GUID"]], "size (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.SIZE"]], "tmp_folder (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.TMP_FOLDER"]], "threadcontrol (class in gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ThreadControl"]], "urls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.URLS"]], "async_download_object_manifest() (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.async_download_object_manifest"]], "async_verify_object_manifest() (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.async_verify_object_manifest"]], "delete_all_guids() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.delete_all_guids"]], "gen3.tools.indexing.download_manifest": [[11, "module-gen3.tools.indexing.download_manifest"]], "gen3.tools.indexing.index_manifest": [[11, "module-gen3.tools.indexing.index_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, "module-gen3.tools.indexing.verify_manifest"]], "index_object_manifest() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.index_object_manifest"]], "column_to_use_as_guid (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID"]], "guid_type_for_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_INDEXED_FILE_OBJECT"]], "guid_type_for_non_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"]], "max_concurrent_requests (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.MAX_CONCURRENT_REQUESTS"]], "async_ingest_metadata_manifest() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest"]], "async_query_urls_from_indexd() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_query_urls_from_indexd"]], "gen3.tools.metadata.ingest_manifest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "gen3wsstorage (class in gen3.wss)": [[13, "gen3.wss.Gen3WsStorage"]], "copy() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.copy"]], "download() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download"]], "download_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download_url"]], "ls() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls"]], "ls_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls_path"]], "rm() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm"]], "rm_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm_path"]], "upload() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload"]], "upload_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload_url"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["auth", "file", "index", "indexing", "jobs", "metadata", "object", "query", "submission", "tools", "tools/drs_pull", "tools/indexing", "tools/metadata", "wss"], "filenames": ["auth.rst", "file.rst", "index.rst", "indexing.rst", "jobs.rst", "metadata.rst", "object.rst", "query.rst", "submission.rst", "tools.rst", "tools/drs_pull.rst", "tools/indexing.rst", "tools/metadata.rst", "wss.rst"], "titles": ["Gen3 Auth Helper", "Gen3 File Class", "Welcome to Gen3 SDK\u2019s documentation!", "Gen3 Index Class", "Gen3 Jobs Class", "Gen3 Metadata Class", "Gen3 Object Class", "Gen3 Query Class", "Gen3 Submission Class", "Gen3 Tools", "DRS Download Tools", "Indexing Tools", "Metadata Tools", "Gen3 Workspace Storage"], "terms": {"class": [0, 2, 10, 11, 13], "gen3auth": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "endpoint": [0, 1, 2, 3, 4, 5, 7, 8, 13], "none": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "refresh_fil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "refresh_token": 0, "idp": 0, "client_credenti": 0, "client_scop": 0, "sourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "base": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "authbas": 0, "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "request": [0, 1, 3, 5, 8, 11, 12], "implement": 0, "order": [0, 8], "support": [0, 1, 5, 8, 11], "jwt": 0, "authent": 0, "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13], "access": [0, 1, 3, 7, 10], "token": [0, 10], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "provid": [0, 1, 3, 5, 7, 8, 12], "refresh": [0, 10], "file": [0, 2, 3, 4, 8, 9, 10, 11, 12, 13], "string": [0, 3, 5, 11, 13], "automat": 0, "when": [0, 3, 7, 10, 12], "thei": [0, 10], "expir": [0, 1], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "str": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12], "opt": 0, "The": [0, 1, 2, 3, 5, 8, 10, 11], "contain": [0, 2, 5, 8, 9, 10, 11, 12], "download": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "json": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "web": 0, "option": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "work": [0, 10], "workspac": [0, 2], "default": [0, 1, 3, 7, 8, 11, 12], "env": 0, "gen3_api_kei": 0, "credenti": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "set": [0, 1, 5, 10], "includ": [0, 3], "search": [0, 2, 3], "path": [0, 1, 5, 10, 11, 13], "valu": [0, 1, 3, 5, 7, 10, 11], "doe": [0, 12], "interpret": 0, "wt": [0, 10], "an": [0, 3, 6, 8, 10, 11], "accesstoken": 0, "If": [0, 1, 7, 11, 12], "can": [0, 3, 4, 8, 11, 12], "specifi": [0, 1, 3, 11, 13], "local": [0, 13], "indic": [0, 11], "environ": 0, "fenc": [0, 1], "tupl": [0, 3, 11, 12], "client_id": 0, "client_secret": 0, "oidc": 0, "client": [0, 3], "ha": [0, 11], "grant": 0, "allow": [0, 6, 8, 10, 11, 12], "obtain": [0, 10], "space": [0, 11], "separ": [0, 11], "list": [0, 1, 3, 4, 5, 7, 8, 10, 11, 13], "scope": [0, 1], "user": [0, 10, 12], "data": [0, 1, 3, 5, 7, 8, 10, 11], "openid": 0, "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "point": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "sandbox": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "common": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "while": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "profil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "page": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13], "instal": [0, 2, 11], "crdc": 0, "some": [0, 2], "arbitrari": 0, "kei": [0, 3, 5, 13], "variabl": [0, 7, 8], "rather": 0, "than": [0, 5], "pass": [0, 7, 8, 10], "argument": [0, 13], "constructor": 0, "id": [0, 1, 3, 5, 10, 11], "secret": 0, "note": [0, 3, 11, 12], "should": [0, 8, 11], "never": 0, "hardcod": 0, "http": [0, 7, 11, 12], "datacommon": 0, "o": 0, "gen3_oidc_client_creds_secret": 0, "initi": [0, 10], "follow": [0, 11], "curl": [0, 2], "given": [0, 3, 4, 5, 8, 10, 12, 13], "ex": [0, 11, 12], "return": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "respons": [0, 1, 3, 4, 5], "under": [0, 8, 13], "index": [0, 2, 5, 9], "authz": [0, 1, 2, 3, 9, 10, 11], "map": [0, 11], "get": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 13], "post": [0, 11], "put": 0, "delet": [0, 1, 2, 3, 5, 6, 8, 10, 11], "i": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12], "els": [0, 12], "filenam": [0, 8, 10, 11, 12], "get_access_token": [0, 2], "auto": [0, 2], "within": [0, 2, 9], "5": [0, 5], "minut": 0, "get_access_token_from_wt": [0, 2], "try": 0, "fetch": 0, "namespac": [0, 12], "refresh_access_token": [0, 2], "new": [0, 3], "gen3fil": [1, 2], "auth_provid": [1, 2, 3, 4, 5, 6, 7, 8, 13], "object": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13], "For": [1, 5, 6, 7, 8, 9, 11], "interact": [1, 3, 4, 5, 6, 8, 13], "manag": [1, 5, 10], "featur": [1, 6], "A": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "servic": [1, 3, 4, 5, 6, 8, 11, 12, 13], "presign": 1, "url": [1, 2, 3, 9, 10, 11, 12, 13], "right": 1, "now": [1, 8], "instanc": [1, 3, 6, 7, 8, 9, 10], "auth": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "delete_fil": [1, 2], "guid": [1, 2, 3, 5, 6, 9, 11, 12], "method": [1, 7, 10], "deprec": 1, "delete_file_loc": [1, 2, 6], "instead": [1, 7, 11], "all": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12], "locat": [1, 6], "store": [1, 3, 10], "remov": [1, 6, 11, 13], "its": [1, 3], "record": [1, 3, 5, 7, 8, 11, 12], "indexd": [1, 3, 6, 10, 11, 12], "uuid": [1, 3, 8], "text": [1, 7, 8], "result": [1, 8, 10, 11], "type": [1, 3, 4, 5, 7, 8, 10, 11, 12], "download_singl": [1, 2], "object_id": [1, 2, 9, 10], "singl": [1, 5, 8], "": [1, 4, 8, 10, 11], "uniqu": [1, 5], "get_presigned_url": [1, 2], "protocol": 1, "retriev": [1, 8, 10, 12], "give": 1, "limit": [1, 3, 5, 12], "time": [1, 8, 10, 11], "pick": 1, "avail": [1, 2, 10, 11], "queri": [1, 2, 3, 5, 8, 11, 12], "upload_fil": [1, 2], "file_nam": [1, 2, 3, 9, 10, 11], "expires_in": 1, "bucket": [1, 6], "upload": [1, 2, 3, 8, 13], "author": 1, "storag": [1, 2, 6], "s3": [1, 10, 11], "az": 1, "isn": 1, "t": [1, 5, 11], "int": [1, 3, 5, 7, 8, 10, 11, 12], "amount": [1, 9], "second": [1, 4], "sign": 1, "datetim": [1, 10], "utcnow": 1, "Be": 1, "sure": 1, "posit": [1, 7], "integ": [1, 3, 8], "also": 1, "treat": [1, 5], "max_presigned_url_ttl": 1, "configur": 1, "must": [1, 5], "allowed_data_upload_bucket": 1, "data_upload_bucket": 1, "represent": [1, 3], "document": [1, 3], "upload_file_to_guid": [1, 2], "exist": [1, 3, 5, 6, 9, 12], "readm": 2, "python": [2, 9, 11], "github": [2, 7], "repo": 2, "setup": 2, "inform": [2, 3, 10], "along": 2, "quickstart": 2, "script": 2, "more": [2, 5, 7, 9, 10], "detail": [2, 7, 10], "about": [2, 3], "variou": 2, "function": [2, 3, 4, 5, 9, 10, 11, 12], "mostli": 2, "docstr": 2, "code": [2, 8], "helper": 2, "gen3index": [2, 3], "async_create_record": [2, 3], "async_get_record": [2, 3], "async_get_records_from_checksum": [2, 3], "async_get_records_on_pag": [2, 3], "async_get_with_param": [2, 3], "async_query_url": [2, 3], "async_update_record": [2, 3], "create_blank": [2, 3], "create_new_vers": [2, 3], "create_record": [2, 3], "delete_record": [2, 3, 8], "get_all_record": [2, 3], "get_guids_prefix": [2, 3], "get_latest_vers": [2, 3], "get_record": [2, 3], "get_record_doc": [2, 3], "get_records_on_pag": [2, 3], "get_stat": [2, 3], "get_url": [2, 3], "get_valid_guid": [2, 3], "get_vers": [2, 3, 4, 5], "get_with_param": [2, 3], "is_healthi": [2, 3, 4, 5], "query_url": [2, 3], "update_blank": [2, 3], "update_record": [2, 3], "job": 2, "gen3job": [2, 4, 10], "async_run_job_and_wait": [2, 4], "create_job": [2, 4], "get_output": [2, 4], "get_statu": [2, 4], "list_job": [2, 4], "metadata": [2, 3, 6, 9, 11], "gen3metadata": [2, 5], "async_cr": [2, 5], "async_create_alias": [2, 5], "async_delete_alia": [2, 5], "async_delete_alias": [2, 5], "async_get": [2, 5], "async_get_alias": [2, 5], "async_upd": [2, 5], "async_update_alias": [2, 5], "batch_creat": [2, 5], "creat": [2, 3, 4, 5, 6, 8, 10, 11], "create_alias": [2, 5], "create_index_key_path": [2, 5], "delete_alia": [2, 5], "delete_alias": [2, 5], "delete_index_key_path": [2, 5], "get_alias": [2, 5], "get_index_key_path": [2, 5], "updat": [2, 3, 5, 10, 11], "update_alias": [2, 5], "gen3object": [2, 6], "delete_object": [2, 6], "gen3queri": [2, 7], "graphql_queri": [2, 7], "raw_data_download": [2, 7], "submiss": 2, "gen3submiss": [2, 8], "create_program": [2, 8], "create_project": [2, 8], "delete_nod": [2, 8], "delete_program": [2, 8], "delete_project": [2, 8], "export_nod": [2, 8], "export_record": [2, 8], "get_dictionary_al": [2, 8], "get_dictionary_nod": [2, 8], "get_graphql_schema": [2, 8], "get_program": [2, 8], "get_project_dictionari": [2, 8], "get_project_manifest": [2, 8], "get_project": [2, 8], "open_project": [2, 8], "submit_fil": [2, 8], "submit_record": [2, 8], "tool": 2, "dr": [2, 9], "downloadmanag": [2, 9, 10], "cache_hosts_wts_token": [2, 9, 10], "get_fresh_token": [2, 9, 10], "resolve_object": [2, 9, 10], "user_access": [2, 9, 10], "downloadstatu": [2, 9, 10], "statu": [2, 4, 9, 10], "start_tim": [2, 9, 10], "end_tim": [2, 9, 10], "object_typ": [2, 9, 10], "hostnam": [2, 9, 10], "file_s": [2, 9, 10, 11], "updated_tim": [2, 9, 10], "created_tim": [2, 9, 10], "access_method": [2, 9, 10], "children": [2, 9, 10], "_manag": [2, 9, 10], "pprint": [2, 9, 10], "manifest": [2, 8, 9, 10, 11, 12], "md5sum": [2, 9, 10], "commons_url": [2, 9, 10, 11, 12], "create_object_list": [2, 9, 10], "load": [2, 9, 10], "load_manifest": [2, 9, 10], "download_drs_object": [], "download_files_in_drs_manifest": [2, 9, 10], "list_access_in_drs_manifest": [2, 9, 10], "list_drs_object": [2, 9, 10], "list_files_in_drs_manifest": [2, 9, 10], "current_dir": [2, 9, 11], "indexd_record_page_s": [2, 9, 11], "max_concurrent_request": [2, 9, 11, 12], "tmp_folder": [2, 9, 11], "async_download_object_manifest": [2, 9, 11], "size": [2, 3, 9, 10, 11], "md5": [2, 3, 9, 11], "acl": [2, 3, 9, 11], "prev_guid": [2, 9, 11], "threadcontrol": [2, 9, 11], "delete_all_guid": [2, 9, 11], "index_object_manifest": [2, 9, 11], "verifi": [2, 9], "async_verify_object_manifest": [2, 9, 11], "ingest": [2, 9], "column_to_use_as_guid": [2, 9, 12], "guid_type_for_indexed_file_object": [2, 9, 12], "guid_type_for_non_indexed_file_object": [2, 9, 12], "async_ingest_metadata_manifest": [2, 9, 12], "async_query_urls_from_indexd": [2, 9, 12], "gen3wsstorag": [2, 13], "copi": [2, 13], "download_url": [2, 13], "l": [2, 13], "ls_path": [2, 13], "rm": [2, 13], "rm_path": [2, 13], "upload_url": [2, 13], "modul": [2, 10, 11], "service_loc": [3, 4, 5], "public": [3, 5], "read": [3, 5, 11], "onli": [3, 5, 7, 8, 10, 11], "necessari": [3, 5], "basic": [3, 11, 12], "cred": 3, "async": [3, 4, 5, 9, 11, 12], "hash": [3, 11], "did": 3, "baseid": 3, "urls_metadata": 3, "version": [3, 4, 5], "_ssl": [3, 4, 5], "asynchron": [3, 4, 5], "dict": [3, 4, 5, 10, 11, 12], "eg": 3, "ab167e49d25b488939b1ede42752458b": 3, "associ": [3, 5], "made": 3, "where": [3, 5, 11, 12], "you": [3, 8, 11], "control": 3, "rbac": 3, "name": [3, 4, 8, 10, 11, 12, 13], "addit": [3, 5, 10, 11], "entri": [3, 11], "attach": [3, 5], "each": [3, 8, 10, 11], "group": 3, "previou": [3, 11], "checksum": [3, 10], "checksum_typ": 3, "match": [3, 5, 12], "param": [3, 5, 8, 10], "correspond": 3, "suppli": 3, "need": [3, 7, 10, 11], "handl": [3, 10], "hash_typ": 3, "whether": [3, 4, 5, 8, 11, 12], "ssl": [3, 4, 5], "pattern": [3, 12], "against": [3, 7, 8, 11, 12], "kwarg": [3, 4, 5], "bodi": 3, "dictionari": [3, 4, 5, 7, 8], "format": [3, 5, 8, 11], "blank": 3, "add": [3, 5], "sinc": 3, "content": [3, 13], "immut": 3, "want": [3, 8], "chang": [3, 11], "That": 3, "field": [3, 5, 7, 11, 12], "old": 3, "ad": 3, "least": 3, "one": [3, 5, 10, 11], "suffici": 3, "good": 3, "idea": 3, "number": [3, 7, 8, 11, 12], "noth": [3, 6], "dist_resolut": 3, "true": [3, 4, 5, 6, 7, 8, 10, 11, 12], "alia": [3, 5], "distribut": 3, "identifi": [3, 5, 9, 11], "boolean": 3, "we": [3, 11], "pagin": 3, "fals": [3, 5, 6, 10, 11], "start": [3, 4, 7, 8, 10], "prefix": 3, "rtype": 3, "has_vers": 3, "latest": 3, "exclud": 3, "without": [3, 5], "repres": [3, 5, 10], "info": [3, 11], "algorithm": 3, "count": 3, "valid": [3, 7], "file_st": 3, "like": [3, 5, 9, 11, 12], "signpost": 3, "healthi": [3, 4, 5], "rev": 3, "revis": 3, "simpl": 3, "consist": 3, "mechan": 3, "dispatch": 4, "job_nam": 4, "job_input": 4, "wait": 4, "output": [4, 5, 11, 12], "Will": [4, 7, 10], "sleep": 4, "linear": 4, "delai": 4, "until": [4, 10], "done": 4, "1": [4, 5, 8, 10, 11], "global": [4, 5], "input": [4, 10, 11], "job_id": 4, "previous": 4, "complet": [4, 11], "bool": [4, 5, 8, 10, 11, 12], "md": [5, 7, 10, 12], "admin_endpoint_suffix": 5, "admin": [5, 11], "alias": 5, "overwrit": 5, "what": 5, "end": [5, 10], "up": [5, 9], "blob": [5, 7], "asyncron": 5, "altern": [5, 11], "merg": 5, "AND": 5, "descript": 5, "metadata_list": 5, "specif": [5, 8, 11, 12], "expect": [5, 9, 11], "anoth": 5, "databas": 5, "return_full_metadata": 5, "10": [5, 7, 11], "offset": [5, 7], "0": [5, 7, 8, 11], "use_agg_md": 5, "off": 5, "logic": [5, 12], "filter": [5, 7], "b": [5, 11], "2": [5, 11], "have": [5, 11], "ar": [5, 7, 8, 9, 10, 11], "alwai": 5, "nest": 5, "c": [5, 11], "3": [5, 11], "same": [5, 11, 13], "whose": 5, "ani": [5, 10, 11], "But": 5, "differ": 5, "33": 5, "d": 5, "4": [5, 11], "e": [5, 10], "won": 5, "333": 5, "defin": [5, 8, 10], "api": [5, 8, 11], "just": [5, 11, 12], "max": 5, "num": 5, "OR": 5, "level": 6, "current": [6, 8, 10], "system": [6, 7, 8, 9], "elasticsearch": 7, "query_str": 7, "execut": [7, 8, 11], "graphql": [7, 8], "query_txt": [7, 8], "syntax": 7, "see": [7, 10, 11], "com": 7, "uc": 7, "cdi": 7, "guppi": 7, "master": 7, "doc": [7, 10], "data_typ": 7, "my_index": 7, "my_field": 7, "first": [7, 8], "filter_object": 7, "sort_object": 7, "verbos": [7, 8], "row": [7, 8, 11, 12], "sort": 7, "equal": 7, "respect": 7, "complex": 7, "appli": 7, "One": 7, "unaccess": 7, "regular": 7, "tier": 7, "mode": 7, "subject": [7, 8], "50": 7, "vital_statu": 7, "submitter_id": 7, "aliv": 7, "asc": 7, "sort_field": 7, "raw": [7, 11], "project_id": [7, 8], "my_program": 7, "my_project": 7, "submit": [8, 11], "export": [8, 10], "sheepdog": 8, "through": [8, 11], "peregrin": 8, "sub": 8, "program": [8, 11], "project": [8, 11], "dcf": 8, "node_nam": 8, "batch_siz": 8, "100": [8, 11], "node": 8, "how": [8, 11], "mani": [8, 11], "print": [8, 10], "progress": [8, 10], "log": [8, 10, 11, 12], "ccle": 8, "demograph": 8, "ordered_node_list": 8, "revers": 8, "graph": 8, "experi": 8, "empti": [8, 11], "uuid1": 8, "uuid2": 8, "node_typ": 8, "fileformat": 8, "which": [8, 10], "belong": 8, "either": 8, "tsv": [8, 11, 12], "screen": 8, "sampl": [8, 10], "ccle_sample_nod": 8, "d70b41b9": 8, "6f90": 8, "4714": 8, "8420": 8, "e043ab8b77b9": 8, "ccle_one_record": 8, "entir": 8, "schema": 8, "run": [8, 11], "introspect": 8, "regist": 8, "mark": 8, "open": [8, 10, 11], "mean": 8, "etc": 8, "max_tri": 8, "retri": 8, "fail": [8, 10], "chunk_siz": 8, "30": 8, "row_offset": 8, "spreadsheet": 8, "multipl": [8, 11], "csv": [8, 11, 12], "xlsx": 8, "worksheet": 8, "skip": 8, "data_spreadsheet": 8, "arrai": 8, "action": [9, 11], "These": 9, "broken": 9, "broad": 9, "categori": 9, "task": 9, "relat": 9, "persist": 9, "Such": 9, "mai": [9, 11], "involv": 9, "assign": 9, "everi": [9, 11], "alreadi": 9, "larg": 9, "most": 9, "util": 9, "capabl": 9, "make": [9, 11], "effici": 9, "main": 10, "datafil": 10, "manifest_1": 10, "my_common": 10, "org": 10, "gen3": [10, 11, 12], "my_credenti": 10, "howto": 10, "drsdownload": 10, "drs_download": 10, "download_list": 10, "show_progress": 10, "assist": 10, "minimum": 10, "interest": 10, "object_list": 10, "host": 10, "It": 10, "possibl": 10, "save_directori": 10, "unpack_packag": 10, "delete_unpacked_packag": 10, "directori": [10, 11], "call": [10, 13], "case": 10, "error": [10, 11, 12], "continu": 10, "save": 10, "show": 10, "bar": 10, "disabl": 10, "unpack": 10, "packag": 10, "after": 10, "them": [10, 11], "drs_hostnam": 10, "known": 10, "otherwis": 10, "success": 10, "resolv": 10, "permiss": 10, "wai": 10, "determin": [10, 11, 12], "reason": 10, "pend": 10, "objectid": 10, "datamanag": 10, "occur": 10, "attribut": [10, 11], "drsobjecttyp": 10, "unknown": 10, "factori": 10, "popul": [10, 12], "server": 10, "requir": 10, "byte": 10, "timestamp": 10, "last": 10, "g": 10, "child": 10, "bundl": 10, "self": 10, "indent": 10, "pretti": 10, "In": 10, "similar": 10, "linux": 10, "tree": 10, "command": [10, 11], "typic": 10, "discoveri": 10, "cach": 10, "files": 10, "static": 10, "bownload": 10, "successfulli": 10, "pars": [10, 11, 12, 13], "output_dir": 10, "conveni": 10, "infil": 10, "wrapper": 10, "cli": 10, "process": 11, "coroutin": 11, "asyncio": [11, 12], "librari": 11, "comma": 11, "header": 11, "download_manifest": 11, "per": [11, 12], "maximum": [11, 12], "desir": 11, "concurr": [11, 12], "across": 11, "thread": 11, "folder": 11, "place": 11, "temporari": 11, "write": 11, "safe": 11, "so": 11, "To": 11, "workaround": 11, "concat": 11, "output_filenam": [11, 12], "num_process": 11, "24": [11, 12], "input_manifest": 11, "python_subprocess_command": 11, "root": [11, 12], "domain": [11, 12], "live": [11, 12], "parallel": 11, "hit": 11, "total": 11, "help": 11, "everyth": 11, "attempt": 11, "By": 11, "someth": 11, "maco": 11, "x": 11, "python3": 11, "tab": 11, "session": 11, "column": [11, 12], "shown": 11, "below": 11, "255e396f": 11, "f1f8": 11, "11e9": 11, "9a07": 11, "0a80fada099c": 11, "473d83400bc1bc9dc635e334faddf33c": 11, "363455714": 11, "pdcdatastor": 11, "test1": 11, "0a80fada098c": 11, "473d83400bc1bc9dc635e334faddd33c": 11, "343434344": 11, "test2": 11, "0a80fada097c": 11, "473d83400bc1bc9dc635e334fadd433c": 11, "543434443": 11, "phs0001": 11, "phs0002": 11, "test3": 11, "0a80fada096c": 11, "test4": 11, "0a80fada010c": 11, "473d83400bc1bc9dc635e334fadde33c": 11, "test5": 11, "index_manifest": 11, "usag": 11, "py": 11, "giangb": 11, "planx": 11, "pla": 11, "net": 11, "manifest_fil": [11, 12], "path_to_manifest": 11, "replace_url": 11, "thread_num": 11, "api_kei": 11, "processed_fil": 11, "num_total_fil": 11, "synchron": 11, "warn": 11, "IF": 11, "know": 11, "THE": 11, "implic": 11, "manifest_file_delimit": [11, 12], "submit_additional_metadata_column": 11, "force_metadata_columns_even_if_empti": 11, "loop": 11, "password": [11, 12], "flag": 11, "replac": 11, "delimit": 11, "forc": 11, "creation": 11, "even": 11, "enabl": 11, "illustr": 11, "columna": 11, "columnb": 11, "columnc": 11, "dataa": 11, "datab": 11, "guid_exampl": 11, "md5_hash": 11, "fieldnam": 11, "There": 11, "those": 11, "abov": 11, "overrid": [11, 12], "assum": 11, "behavior": 11, "simpli": 11, "manifest_row_pars": [11, 12], "custom": 11, "import": 11, "verify_manifest": 11, "def": 11, "_get_authz_from_row": 11, "strip": 11, "parser": [11, 12], "verify_object_manifest": 11, "verif": 11, "error_nam": 11, "value_from_manifest": 11, "actual": 11, "value_from_indexd": 11, "93d9af72": 11, "b0f1": 11, "450c": 11, "a5c6": 11, "7d3d8d2083b4": 11, "dev": 11, "test": 11, "_get_acl_from_row": 11, "_get_file_name_from_row": 11, "_get_file_size_from_row": 11, "_get_guid_from_row": 11, "_get_md5_from_row": 11, "_get_urls_from_row": 11, "1692675811": [], "9771066": [], "indexd_field": [11, 12], "func_to_parse_row": [11, 12], "delimet": [11, 12], "metdata": 12, "ingest_manifest": 12, "NOT": 12, "guid_from_fil": 12, "_get_guid_for_row": 12, "indexed_file_object_guid": 12, "_query_for_associated_indexd_record_guid": 12, "guid_for_row": 12, "elsewher": 12, "metadata_sourc": 12, "1692675812": [], "3144128": [], "get_guid_from_fil": 12, "metadata_typ": 12, "dbgap": 12, "usual": 12, "fill": 12, "_guid_typ": 12, "is_indexed_file_object": 12, "lock": 12, "semaphor": 12, "semaphon": 12, "ammount": 12, "connect": 12, "wss": 13, "src_urlstr": 13, "dest_urlstr": 13, "appropri": 13, "src_w": 13, "src_wskei": 13, "dest_path": 13, "disk": 13, "w": 13, "wskei": 13, "ws_urlstr": 13, "form": 13, "src_path": 13, "dest_w": 13, "dest_wskei": 13, "1692676927": [], "2291234": [], "6143494": [], "1692716275": [], "1734753": [], "577429": [], "1692716527": [], "4222114": [], "9511294": [], "1692717039": [], "3338752": [], "744264": [], "1692741377": [], "0982177": [], "4559627": [], "1692743380": [], "4060478": [], "7860734": [], "1692743691": [], "983341": [], "1692743692": [], "4543839": [], "1692825679": [], "249731": [], "5510318": [], "1692886743": [], "381985": [], "8074749": [], "1693233058": [11, 12], "3038826": 11, "6020522": 12}, "objects": {"gen3.auth": [[0, 0, 1, "", "Gen3Auth"]], "gen3.auth.Gen3Auth": [[0, 1, 1, "", "curl"], [0, 1, 1, "", "get_access_token"], [0, 1, 1, "", "get_access_token_from_wts"], [0, 1, 1, "", "refresh_access_token"]], "gen3.file": [[1, 0, 1, "", "Gen3File"]], "gen3.file.Gen3File": [[1, 1, 1, "", "delete_file"], [1, 1, 1, "", "delete_file_locations"], [1, 1, 1, "", "download_single"], [1, 1, 1, "", "get_presigned_url"], [1, 1, 1, "", "upload_file"], [1, 1, 1, "", "upload_file_to_guid"]], "gen3.index": [[3, 0, 1, "", "Gen3Index"]], "gen3.index.Gen3Index": [[3, 1, 1, "", "async_create_record"], [3, 1, 1, "", "async_get_record"], [3, 1, 1, "", "async_get_records_from_checksum"], [3, 1, 1, "", "async_get_records_on_page"], [3, 1, 1, "", "async_get_with_params"], [3, 1, 1, "", "async_query_urls"], [3, 1, 1, "", "async_update_record"], [3, 1, 1, "", "create_blank"], [3, 1, 1, "", "create_new_version"], [3, 1, 1, "", "create_record"], [3, 1, 1, "", "delete_record"], [3, 1, 1, "", "get"], [3, 1, 1, "", "get_all_records"], [3, 1, 1, "", "get_guids_prefix"], [3, 1, 1, "", "get_latest_version"], [3, 1, 1, "", "get_record"], [3, 1, 1, "", "get_record_doc"], [3, 1, 1, "", "get_records"], [3, 1, 1, "", "get_records_on_page"], [3, 1, 1, "", "get_stats"], [3, 1, 1, "", "get_urls"], [3, 1, 1, "", "get_valid_guids"], [3, 1, 1, "", "get_version"], [3, 1, 1, "", "get_versions"], [3, 1, 1, "", "get_with_params"], [3, 1, 1, "", "is_healthy"], [3, 1, 1, "", "query_urls"], [3, 1, 1, "", "update_blank"], [3, 1, 1, "", "update_record"]], "gen3.jobs": [[4, 0, 1, "", "Gen3Jobs"]], "gen3.jobs.Gen3Jobs": [[4, 1, 1, "", "async_run_job_and_wait"], [4, 1, 1, "", "create_job"], [4, 1, 1, "", "get_output"], [4, 1, 1, "", "get_status"], [4, 1, 1, "", "get_version"], [4, 1, 1, "", "is_healthy"], [4, 1, 1, "", "list_jobs"]], "gen3.metadata": [[5, 0, 1, "", "Gen3Metadata"]], "gen3.metadata.Gen3Metadata": [[5, 1, 1, "", "async_create"], [5, 1, 1, "", "async_create_aliases"], [5, 1, 1, "", "async_delete_alias"], [5, 1, 1, "", "async_delete_aliases"], [5, 1, 1, "", "async_get"], [5, 1, 1, "", "async_get_aliases"], [5, 1, 1, "", "async_update"], [5, 1, 1, "", "async_update_aliases"], [5, 2, 1, "", "auth_provider"], [5, 1, 1, "", "batch_create"], [5, 1, 1, "", "create"], [5, 1, 1, "", "create_aliases"], [5, 1, 1, "", "create_index_key_path"], [5, 1, 1, "", "delete"], [5, 1, 1, "", "delete_alias"], [5, 1, 1, "", "delete_aliases"], [5, 1, 1, "", "delete_index_key_path"], [5, 2, 1, "", "endpoint"], [5, 1, 1, "", "get"], [5, 1, 1, "", "get_aliases"], [5, 1, 1, "", "get_index_key_paths"], [5, 1, 1, "", "get_version"], [5, 1, 1, "", "is_healthy"], [5, 1, 1, "", "query"], [5, 1, 1, "", "update"], [5, 1, 1, "", "update_aliases"]], "gen3.object": [[6, 0, 1, "", "Gen3Object"]], "gen3.object.Gen3Object": [[6, 1, 1, "", "delete_object"]], "gen3.query": [[7, 0, 1, "", "Gen3Query"]], "gen3.query.Gen3Query": [[7, 1, 1, "", "graphql_query"], [7, 1, 1, "", "query"], [7, 1, 1, "", "raw_data_download"]], "gen3.submission": [[8, 0, 1, "", "Gen3Submission"]], "gen3.submission.Gen3Submission": [[8, 1, 1, "", "create_program"], [8, 1, 1, "", "create_project"], [8, 1, 1, "", "delete_node"], [8, 1, 1, "", "delete_nodes"], [8, 1, 1, "", "delete_program"], [8, 1, 1, "", "delete_project"], [8, 1, 1, "", "delete_record"], [8, 1, 1, "", "delete_records"], [8, 1, 1, "", "export_node"], [8, 1, 1, "", "export_record"], [8, 1, 1, "", "get_dictionary_all"], [8, 1, 1, "", "get_dictionary_node"], [8, 1, 1, "", "get_graphql_schema"], [8, 1, 1, "", "get_programs"], [8, 1, 1, "", "get_project_dictionary"], [8, 1, 1, "", "get_project_manifest"], [8, 1, 1, "", "get_projects"], [8, 1, 1, "", "open_project"], [8, 1, 1, "", "query"], [8, 1, 1, "", "submit_file"], [8, 1, 1, "", "submit_record"]], "gen3": [[9, 3, 0, "-", "tools"]], "gen3.tools.download": [[10, 3, 0, "-", "drs_download"]], "gen3.tools.download.drs_download": [[10, 0, 1, "", "DownloadManager"], [10, 0, 1, "", "DownloadStatus"], [10, 0, 1, "", "Downloadable"], [10, 0, 1, "", "Manifest"], [10, 4, 1, "", "download_files_in_drs_manifest"], [10, 4, 1, "", "list_access_in_drs_manifest"], [10, 4, 1, "", "list_drs_object"], [10, 4, 1, "", "list_files_in_drs_manifest"]], "gen3.tools.download.drs_download.DownloadManager": [[10, 1, 1, "", "cache_hosts_wts_tokens"], [10, 1, 1, "", "download"], [10, 1, 1, "", "get_fresh_token"], [10, 1, 1, "", "resolve_objects"], [10, 1, 1, "", "user_access"]], "gen3.tools.download.drs_download.DownloadStatus": [[10, 2, 1, "", "end_time"], [10, 2, 1, "", "start_time"], [10, 2, 1, "", "status"]], "gen3.tools.download.drs_download.Downloadable": [[10, 2, 1, "", "_manager"], [10, 2, 1, "", "access_methods"], [10, 2, 1, "", "children"], [10, 2, 1, "", "created_time"], [10, 1, 1, "", "download"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 2, 1, "", "hostname"], [10, 2, 1, "", "object_id"], [10, 2, 1, "", "object_type"], [10, 1, 1, "", "pprint"], [10, 2, 1, "", "updated_time"]], "gen3.tools.download.drs_download.Manifest": [[10, 2, 1, "", "commons_url"], [10, 1, 1, "", "create_object_list"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 1, 1, "", "load"], [10, 1, 1, "", "load_manifest"], [10, 2, 1, "", "md5sum"], [10, 2, 1, "", "object_id"]], "gen3.tools.indexing": [[11, 3, 0, "-", "download_manifest"], [11, 3, 0, "-", "index_manifest"], [11, 3, 0, "-", "verify_manifest"]], "gen3.tools.indexing.download_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "INDEXD_RECORD_PAGE_SIZE"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 2, 1, "", "TMP_FOLDER"], [11, 4, 1, "", "async_download_object_manifest"]], "gen3.tools.indexing.index_manifest": [[11, 2, 1, "", "ACLS"], [11, 2, 1, "", "AUTHZ"], [11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "GUID"], [11, 2, 1, "", "MD5"], [11, 2, 1, "", "PREV_GUID"], [11, 2, 1, "", "SIZE"], [11, 0, 1, "", "ThreadControl"], [11, 2, 1, "", "URLS"], [11, 4, 1, "", "delete_all_guids"], [11, 4, 1, "", "index_object_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 4, 1, "", "async_verify_object_manifest"]], "gen3.tools.metadata": [[12, 3, 0, "-", "ingest_manifest"]], "gen3.tools.metadata.ingest_manifest": [[12, 2, 1, "", "COLUMN_TO_USE_AS_GUID"], [12, 2, 1, "", "GUID_TYPE_FOR_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [12, 4, 1, "", "async_ingest_metadata_manifest"], [12, 4, 1, "", "async_query_urls_from_indexd"]], "gen3.wss": [[13, 0, 1, "", "Gen3WsStorage"]], "gen3.wss.Gen3WsStorage": [[13, 1, 1, "", "copy"], [13, 1, 1, "", "download"], [13, 1, 1, "", "download_url"], [13, 1, 1, "", "ls"], [13, 1, 1, "", "ls_path"], [13, 1, 1, "", "rm"], [13, 1, 1, "", "rm_path"], [13, 1, 1, "", "upload"], [13, 1, 1, "", "upload_url"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:module", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "auth": 0, "helper": 0, "file": 1, "class": [1, 3, 4, 5, 6, 7, 8], "welcom": 2, "sdk": 2, "": 2, "document": 2, "indic": 2, "tabl": 2, "index": [3, 11], "job": 4, "metadata": [5, 12], "object": 6, "queri": 7, "submiss": 8, "tool": [9, 10, 11, 12], "dr": 10, "download": [10, 11], "verifi": 11, "ingest": 12, "workspac": 13, "storag": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Gen3 Auth Helper": [[0, "gen3-auth-helper"]], "Gen3 File Class": [[1, "gen3-file-class"]], "Welcome to Gen3 SDK\u2019s documentation!": [[2, "welcome-to-gen3-sdk-s-documentation"]], "Indices and tables": [[2, "indices-and-tables"]], "Gen3 Index Class": [[3, "gen3-index-class"]], "Gen3 Jobs Class": [[4, "gen3-jobs-class"]], "Gen3 Metadata Class": [[5, "gen3-metadata-class"]], "Gen3 Object Class": [[6, "gen3-object-class"]], "Gen3 Query Class": [[7, "gen3-query-class"]], "Gen3 Submission Class": [[8, "gen3-submission-class"]], "Gen3 Tools": [[9, "gen3-tools"]], "DRS Download Tools": [[10, "module-gen3.tools.download.drs_download"]], "Indexing Tools": [[11, "indexing-tools"]], "Download": [[11, "module-gen3.tools.indexing.download_manifest"]], "Index": [[11, "module-gen3.tools.indexing.index_manifest"]], "Verify": [[11, "module-gen3.tools.indexing.verify_manifest"]], "Metadata Tools": [[12, "metadata-tools"]], "Ingest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "Gen3 Workspace Storage": [[13, "gen3-workspace-storage"]]}, "indexentries": {"gen3auth (class in gen3.auth)": [[0, "gen3.auth.Gen3Auth"]], "curl() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.curl"]], "get_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token"]], "get_access_token_from_wts() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token_from_wts"]], "refresh_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.refresh_access_token"]], "gen3file (class in gen3.file)": [[1, "gen3.file.Gen3File"]], "delete_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file"]], "delete_file_locations() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file_locations"]], "download_single() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.download_single"]], "get_presigned_url() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.get_presigned_url"]], "upload_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file"]], "upload_file_to_guid() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file_to_guid"]], "gen3index (class in gen3.index)": [[3, "gen3.index.Gen3Index"]], "async_create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_create_record"]], "async_get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_record"]], "async_get_records_from_checksum() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_from_checksum"]], "async_get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_on_page"]], "async_get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_with_params"]], "async_query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_query_urls"]], "async_update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_update_record"]], "create_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_blank"]], "create_new_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_new_version"]], "create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_record"]], "delete_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.delete_record"]], "get() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get"]], "get_all_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_all_records"]], "get_guids_prefix() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_guids_prefix"]], "get_latest_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_latest_version"]], "get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record"]], "get_record_doc() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record_doc"]], "get_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records"]], "get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records_on_page"]], "get_stats() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_stats"]], "get_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_urls"]], "get_valid_guids() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_valid_guids"]], "get_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_version"]], "get_versions() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_versions"]], "get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_with_params"]], "is_healthy() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.is_healthy"]], "query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.query_urls"]], "update_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_blank"]], "update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_record"]], "gen3jobs (class in gen3.jobs)": [[4, "gen3.jobs.Gen3Jobs"]], "async_run_job_and_wait() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.async_run_job_and_wait"]], "create_job() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.create_job"]], "get_output() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_output"]], "get_status() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_status"]], "get_version() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_version"]], "is_healthy() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.is_healthy"]], "list_jobs() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.list_jobs"]], "gen3metadata (class in gen3.metadata)": [[5, "gen3.metadata.Gen3Metadata"]], "async_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create"]], "async_create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create_aliases"]], "async_delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_alias"]], "async_delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_aliases"]], "async_get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get"]], "async_get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get_aliases"]], "async_update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update"]], "async_update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update_aliases"]], "auth_provider (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.auth_provider"]], "batch_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.batch_create"]], "create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create"]], "create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_aliases"]], "create_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_index_key_path"]], "delete() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete"]], "delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_alias"]], "delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_aliases"]], "delete_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_index_key_path"]], "endpoint (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.endpoint"]], "get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get"]], "get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_aliases"]], "get_index_key_paths() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_index_key_paths"]], "get_version() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_version"]], "is_healthy() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.is_healthy"]], "query() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.query"]], "update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update"]], "update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update_aliases"]], "gen3object (class in gen3.object)": [[6, "gen3.object.Gen3Object"]], "delete_object() (gen3.object.gen3object method)": [[6, "gen3.object.Gen3Object.delete_object"]], "gen3query (class in gen3.query)": [[7, "gen3.query.Gen3Query"]], "graphql_query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.graphql_query"]], "query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.query"]], "raw_data_download() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.raw_data_download"]], "gen3submission (class in gen3.submission)": [[8, "gen3.submission.Gen3Submission"]], "create_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_program"]], "create_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_project"]], "delete_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_node"]], "delete_nodes() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_nodes"]], "delete_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_program"]], "delete_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_project"]], "delete_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_record"]], "delete_records() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_records"]], "export_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_node"]], "export_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_record"]], "get_dictionary_all() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_all"]], "get_dictionary_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_node"]], "get_graphql_schema() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_graphql_schema"]], "get_programs() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_programs"]], "get_project_dictionary() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_dictionary"]], "get_project_manifest() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_manifest"]], "get_projects() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_projects"]], "open_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.open_project"]], "query() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.query"]], "submit_file() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_file"]], "submit_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_record"]], "gen3.tools": [[9, "module-gen3.tools"]], "module": [[9, "module-gen3.tools"], [10, "module-gen3.tools.download.drs_download"], [11, "module-gen3.tools.indexing.download_manifest"], [11, "module-gen3.tools.indexing.index_manifest"], [11, "module-gen3.tools.indexing.verify_manifest"], [12, "module-gen3.tools.metadata.ingest_manifest"]], "downloadmanager (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadManager"]], "downloadstatus (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadStatus"]], "downloadable (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Downloadable"]], "manifest (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Manifest"]], "_manager (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable._manager"]], "access_methods (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.access_methods"]], "cache_hosts_wts_tokens() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.cache_hosts_wts_tokens"]], "children (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.children"]], "commons_url (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.commons_url"]], "create_object_list() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.create_object_list"]], "created_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.created_time"]], "download() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.download"]], "download() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.download"]], "download_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.download_files_in_drs_manifest"]], "end_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.end_time"]], "file_name (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_name"]], "file_name (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_name"]], "file_size (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_size"]], "file_size (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_size"]], "gen3.tools.download.drs_download": [[10, "module-gen3.tools.download.drs_download"]], "get_fresh_token() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.get_fresh_token"]], "hostname (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.hostname"]], "list_access_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_access_in_drs_manifest"]], "list_drs_object() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_drs_object"]], "list_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_files_in_drs_manifest"]], "load() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load"]], "load_manifest() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load_manifest"]], "md5sum (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.md5sum"]], "object_id (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_id"]], "object_id (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.object_id"]], "object_type (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_type"]], "pprint() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.pprint"]], "resolve_objects() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.resolve_objects"]], "start_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.start_time"]], "status (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.status"]], "updated_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.updated_time"]], "user_access() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.user_access"]], "acls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ACLS"]], "authz (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.AUTHZ"]], "current_dir (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.CURRENT_DIR"]], "guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.GUID"]], "indexd_record_page_size (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.INDEXD_RECORD_PAGE_SIZE"]], "max_concurrent_requests (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.MAX_CONCURRENT_REQUESTS"]], "max_concurrent_requests (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.MAX_CONCURRENT_REQUESTS"]], "md5 (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.MD5"]], "prev_guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.PREV_GUID"]], "size (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.SIZE"]], "tmp_folder (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.TMP_FOLDER"]], "threadcontrol (class in gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ThreadControl"]], "urls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.URLS"]], "async_download_object_manifest() (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.async_download_object_manifest"]], "async_verify_object_manifest() (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.async_verify_object_manifest"]], "delete_all_guids() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.delete_all_guids"]], "gen3.tools.indexing.download_manifest": [[11, "module-gen3.tools.indexing.download_manifest"]], "gen3.tools.indexing.index_manifest": [[11, "module-gen3.tools.indexing.index_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, "module-gen3.tools.indexing.verify_manifest"]], "index_object_manifest() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.index_object_manifest"]], "column_to_use_as_guid (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID"]], "guid_type_for_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_INDEXED_FILE_OBJECT"]], "guid_type_for_non_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"]], "max_concurrent_requests (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.MAX_CONCURRENT_REQUESTS"]], "async_ingest_metadata_manifest() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest"]], "async_query_urls_from_indexd() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_query_urls_from_indexd"]], "gen3.tools.metadata.ingest_manifest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "gen3wsstorage (class in gen3.wss)": [[13, "gen3.wss.Gen3WsStorage"]], "copy() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.copy"]], "download() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download"]], "download_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download_url"]], "ls() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls"]], "ls_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls_path"]], "rm() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm"]], "rm_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm_path"]], "upload() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload"]], "upload_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload_url"]]}}) \ No newline at end of file diff --git a/docs/_build/html/tools.html b/docs/_build/html/tools.html index dacf213a1..00687b817 100644 --- a/docs/_build/html/tools.html +++ b/docs/_build/html/tools.html @@ -87,7 +87,7 @@

                  Gen3 ToolsIndexing Tools

Verify all file object records into a manifest csv

Parameters:
@@ -435,7 +435,7 @@

Navigation

  • Gen3 Tools
    • DRS Download Tools
    • Indexing Tools
        -
      • Download
          +
        • Download
        • -
        • Index
            +
          • Index
          • -
          • Verify
              +
            • Verify
              • CURRENT_DIR
              • MAX_CONCURRENT_REQUESTS
              • async_verify_object_manifest()
              • diff --git a/docs/_build/html/tools/metadata.html b/docs/_build/html/tools/metadata.html index 02b342e9a..27980da2a 100644 --- a/docs/_build/html/tools/metadata.html +++ b/docs/_build/html/tools/metadata.html @@ -33,9 +33,9 @@

                Metadata Tools

                -
                -

                Ingest

                -

                Tools for ingesting a CSV/TSV metadata manifest into the Metdata Service.

                +
                +

                Ingest

                +

                Tools for ingesting a CSV/TSV metadata manifest into the Metdata Service.

                gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID
                @@ -101,7 +101,7 @@

                Ingest
                -async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1692886743.8074749.log', get_guid_from_file=True, metadata_type=None)[source]
                +async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1693233058.6020522.log', get_guid_from_file=True, metadata_type=None)[source]

                Ingest all metadata records into a manifest csv

                Parameters:
                @@ -190,7 +190,7 @@

                Navigation

              • DRS Download Tools
              • Indexing Tools
              • Metadata Tools
                  -
                • Ingest
                    +
                  • Ingest
                    • COLUMN_TO_USE_AS_GUID
                    • GUID_TYPE_FOR_INDEXED_FILE_OBJECT
                    • GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT
                    • From b9349e0483b9681d5bd7382c89eee9491a3ff303 Mon Sep 17 00:00:00 2001 From: Spencer Axelrod Date: Mon, 28 Aug 2023 09:45:47 -0500 Subject: [PATCH 03/12] remove comment --- gen3/tools/indexing/merge_manifests.py | 1 - 1 file changed, 1 deletion(-) diff --git a/gen3/tools/indexing/merge_manifests.py b/gen3/tools/indexing/merge_manifests.py index 6ea3e7bb0..5a80e32e4 100644 --- a/gen3/tools/indexing/merge_manifests.py +++ b/gen3/tools/indexing/merge_manifests.py @@ -111,7 +111,6 @@ def merge_bucket_manifests( records_from_file, _ = get_and_verify_fileinfos_from_manifest( manifest, include_additional_columns=True ) - # records_with_no_guid = [] for record in records_from_file: # simple case where this is the first time we've seen this hash headers.update(record.keys()) From 559f35fffe45a3578e614d6e377a902f011291b3 Mon Sep 17 00:00:00 2001 From: SpencerAxelrod Date: Mon, 28 Aug 2023 14:48:18 +0000 Subject: [PATCH 04/12] Apply automatic documentation changes --- docs/_build/doctrees/environment.pickle | Bin 1553141 -> 1553141 bytes docs/_build/doctrees/tools/indexing.doctree | Bin 100101 -> 100101 bytes docs/_build/doctrees/tools/metadata.doctree | Bin 35919 -> 35919 bytes docs/_build/html/searchindex.js | 2 +- docs/_build/html/tools/indexing.html | 2 +- docs/_build/html/tools/metadata.html | 2 +- 6 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index cc0330841e2661df8be3a695771bd1f15bfbe032..aa7f839dff029bb4296bfbe1075882c78520de38 100644 GIT binary patch delta 9845 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 delta 9845 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 NNCg`wKYv{O{{Vn_G)w>h diff --git a/docs/_build/doctrees/tools/indexing.doctree b/docs/_build/doctrees/tools/indexing.doctree index 2dbcd31e50f008fe0c24dc2ed68f5a345f1bf02d..a9ad6a6e2673eaff1495d83734e5568118a3ade3 100644 GIT binary patch delta 113 zcmZqeV{7eWYuLiL-Ad5Jz|vUH$k5c%%)&x1CqG?%^8Cf3+wWR2ny~U9%Wao+V0^-j ZA~c=XhtVBXB*BN#21R813LnN;D**E69cusp delta 113 zcmZqeV{7eWYuLiL-Ad5dz|=y|*udDr!pKZ7CqG?%^8Cf3+wWR2ny~U9%Wao+V0^-j ZA~c=XhtVBXB*BN#21R813LnN;D*)<^9XIndexing Tools
                      -async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1693233058.3038826.log')[source]
                      +async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1693234093.2159688.log')[source]

                      Verify all file object records into a manifest csv

                      Parameters:
                      diff --git a/docs/_build/html/tools/metadata.html b/docs/_build/html/tools/metadata.html index 27980da2a..d7860a28e 100644 --- a/docs/_build/html/tools/metadata.html +++ b/docs/_build/html/tools/metadata.html @@ -101,7 +101,7 @@

                      Metadata Tools
                      -async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1693233058.6020522.log', get_guid_from_file=True, metadata_type=None)[source]
                      +async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1693234093.5807943.log', get_guid_from_file=True, metadata_type=None)[source]

                      Ingest all metadata records into a manifest csv

                      Parameters:
                      From 2de3a7c7a16d9a84d0e686bfe1e5d9eb71530e0d Mon Sep 17 00:00:00 2001 From: Spencer Axelrod Date: Mon, 28 Aug 2023 10:19:07 -0500 Subject: [PATCH 05/12] fix comments --- gen3/tools/indexing/merge_manifests.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gen3/tools/indexing/merge_manifests.py b/gen3/tools/indexing/merge_manifests.py index 5a80e32e4..56752ea43 100644 --- a/gen3/tools/indexing/merge_manifests.py +++ b/gen3/tools/indexing/merge_manifests.py @@ -149,8 +149,8 @@ def merge_bucket_manifests( ) all_rows[record[MD5_STANDARD_KEY]] = updated_records.values() - # for the entries where there was no GUID specified, we will add that metadata - # to all previous records + # for the entries where there was no GUID specified, we will add that metadata + # to all previous records for record in records_with_no_guid: updated_records = _get_updated_records( record=record, From 603e9c9f10ade351389d8b245dd58b306629a34f Mon Sep 17 00:00:00 2001 From: SpencerAxelrod Date: Mon, 28 Aug 2023 15:20:51 +0000 Subject: [PATCH 06/12] Apply automatic documentation changes --- docs/_build/doctrees/environment.pickle | Bin 1553141 -> 1553136 bytes docs/_build/doctrees/tools/indexing.doctree | Bin 100101 -> 100101 bytes docs/_build/doctrees/tools/metadata.doctree | Bin 35919 -> 35914 bytes docs/_build/html/searchindex.js | 2 +- docs/_build/html/tools/indexing.html | 2 +- docs/_build/html/tools/metadata.html | 2 +- 6 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index aa7f839dff029bb4296bfbe1075882c78520de38..41245f2786c17aef8c77f5eecbef9b475e34d2ae 100644 GIT binary patch delta 11148 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 JbLLD+{2y>S5v>3K delta 11041 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 p%2?B diff --git a/docs/_build/doctrees/tools/indexing.doctree b/docs/_build/doctrees/tools/indexing.doctree index a9ad6a6e2673eaff1495d83734e5568118a3ade3..0389db40228ef34ba9a40ccfc17cb3d4d7cc3e9b 100644 GIT binary patch delta 113 zcmZqeV{7eWYuLiL-Ad5Rz{E_?(7?pp!q`+VCqG?%^8Cf3+wWR2ny~U9%Wao+V0^-j ZA~c=XhtVBXB*BN#21R813LnN;D*))d9W(#{ delta 113 zcmZqeV{7eWYuLiL-Ad5Jz|vUH$k5c%%)&x1CqG?%^8Cf3+wWR2ny~U9%Wao+V0^-j ZA~c=XhtVBXB*BN#21R813LnN;D**E69cusp diff --git a/docs/_build/doctrees/tools/metadata.doctree b/docs/_build/doctrees/tools/metadata.doctree index d5851233211984a9ae25fdda66f62bef68ac8c56..934c36823ee82f1c2e9c63844bedd509b599336a 100644 GIT binary patch delta 154 zcmX>iJ6{>g{hgP>Euj(o6SL5 z$C(-HHcRO_qsVQ})Nkcrbf5g*+*|-ji(XECy87gUIl>SrNpz_x8SJrBGQ@ho8jae delta 154 zcmX>#gX#PXCYA=)sV*B?mT0idWn^HOJTY8u^C=AnMjjIbOJhA#3j=dY6XVJ0`Zk*b zwT?40)^C>7b4HcioUY%>!RRsht+_d>CVdMDh_Dp0S$aA7>FQH5*kh+;i1lFV+I-8R GAQ%8>$SfKF diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 2cfd5f10f..6976b4604 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["auth", "file", "index", "indexing", "jobs", "metadata", "object", "query", "submission", "tools", "tools/drs_pull", "tools/indexing", "tools/metadata", "wss"], "filenames": ["auth.rst", "file.rst", "index.rst", "indexing.rst", "jobs.rst", "metadata.rst", "object.rst", "query.rst", "submission.rst", "tools.rst", "tools/drs_pull.rst", "tools/indexing.rst", "tools/metadata.rst", "wss.rst"], "titles": ["Gen3 Auth Helper", "Gen3 File Class", "Welcome to Gen3 SDK\u2019s documentation!", "Gen3 Index Class", "Gen3 Jobs Class", "Gen3 Metadata Class", "Gen3 Object Class", "Gen3 Query Class", "Gen3 Submission Class", "Gen3 Tools", "DRS Download Tools", "Indexing Tools", "Metadata Tools", "Gen3 Workspace Storage"], "terms": {"class": [0, 2, 10, 11, 13], "gen3auth": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "endpoint": [0, 1, 2, 3, 4, 5, 7, 8, 13], "none": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "refresh_fil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "refresh_token": 0, "idp": 0, "client_credenti": 0, "client_scop": 0, "sourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "base": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "authbas": 0, "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "request": [0, 1, 3, 5, 8, 11, 12], "implement": 0, "order": [0, 8], "support": [0, 1, 5, 8, 11], "jwt": 0, "authent": 0, "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13], "access": [0, 1, 3, 7, 10], "token": [0, 10], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "provid": [0, 1, 3, 5, 7, 8, 12], "refresh": [0, 10], "file": [0, 2, 3, 4, 8, 9, 10, 11, 12, 13], "string": [0, 3, 5, 11, 13], "automat": 0, "when": [0, 3, 7, 10, 12], "thei": [0, 10], "expir": [0, 1], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "str": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12], "opt": 0, "The": [0, 1, 2, 3, 5, 8, 10, 11], "contain": [0, 2, 5, 8, 9, 10, 11, 12], "download": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "json": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "web": 0, "option": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "work": [0, 10], "workspac": [0, 2], "default": [0, 1, 3, 7, 8, 11, 12], "env": 0, "gen3_api_kei": 0, "credenti": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "set": [0, 1, 5, 10], "includ": [0, 3], "search": [0, 2, 3], "path": [0, 1, 5, 10, 11, 13], "valu": [0, 1, 3, 5, 7, 10, 11], "doe": [0, 12], "interpret": 0, "wt": [0, 10], "an": [0, 3, 6, 8, 10, 11], "accesstoken": 0, "If": [0, 1, 7, 11, 12], "can": [0, 3, 4, 8, 11, 12], "specifi": [0, 1, 3, 11, 13], "local": [0, 13], "indic": [0, 11], "environ": 0, "fenc": [0, 1], "tupl": [0, 3, 11, 12], "client_id": 0, "client_secret": 0, "oidc": 0, "client": [0, 3], "ha": [0, 11], "grant": 0, "allow": [0, 6, 8, 10, 11, 12], "obtain": [0, 10], "space": [0, 11], "separ": [0, 11], "list": [0, 1, 3, 4, 5, 7, 8, 10, 11, 13], "scope": [0, 1], "user": [0, 10, 12], "data": [0, 1, 3, 5, 7, 8, 10, 11], "openid": 0, "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "point": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "sandbox": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "common": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "while": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "profil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "page": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13], "instal": [0, 2, 11], "crdc": 0, "some": [0, 2], "arbitrari": 0, "kei": [0, 3, 5, 13], "variabl": [0, 7, 8], "rather": 0, "than": [0, 5], "pass": [0, 7, 8, 10], "argument": [0, 13], "constructor": 0, "id": [0, 1, 3, 5, 10, 11], "secret": 0, "note": [0, 3, 11, 12], "should": [0, 8, 11], "never": 0, "hardcod": 0, "http": [0, 7, 11, 12], "datacommon": 0, "o": 0, "gen3_oidc_client_creds_secret": 0, "initi": [0, 10], "follow": [0, 11], "curl": [0, 2], "given": [0, 3, 4, 5, 8, 10, 12, 13], "ex": [0, 11, 12], "return": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "respons": [0, 1, 3, 4, 5], "under": [0, 8, 13], "index": [0, 2, 5, 9], "authz": [0, 1, 2, 3, 9, 10, 11], "map": [0, 11], "get": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 13], "post": [0, 11], "put": 0, "delet": [0, 1, 2, 3, 5, 6, 8, 10, 11], "i": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12], "els": [0, 12], "filenam": [0, 8, 10, 11, 12], "get_access_token": [0, 2], "auto": [0, 2], "within": [0, 2, 9], "5": [0, 5], "minut": 0, "get_access_token_from_wt": [0, 2], "try": 0, "fetch": 0, "namespac": [0, 12], "refresh_access_token": [0, 2], "new": [0, 3], "gen3fil": [1, 2], "auth_provid": [1, 2, 3, 4, 5, 6, 7, 8, 13], "object": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13], "For": [1, 5, 6, 7, 8, 9, 11], "interact": [1, 3, 4, 5, 6, 8, 13], "manag": [1, 5, 10], "featur": [1, 6], "A": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "servic": [1, 3, 4, 5, 6, 8, 11, 12, 13], "presign": 1, "url": [1, 2, 3, 9, 10, 11, 12, 13], "right": 1, "now": [1, 8], "instanc": [1, 3, 6, 7, 8, 9, 10], "auth": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "delete_fil": [1, 2], "guid": [1, 2, 3, 5, 6, 9, 11, 12], "method": [1, 7, 10], "deprec": 1, "delete_file_loc": [1, 2, 6], "instead": [1, 7, 11], "all": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12], "locat": [1, 6], "store": [1, 3, 10], "remov": [1, 6, 11, 13], "its": [1, 3], "record": [1, 3, 5, 7, 8, 11, 12], "indexd": [1, 3, 6, 10, 11, 12], "uuid": [1, 3, 8], "text": [1, 7, 8], "result": [1, 8, 10, 11], "type": [1, 3, 4, 5, 7, 8, 10, 11, 12], "download_singl": [1, 2], "object_id": [1, 2, 9, 10], "singl": [1, 5, 8], "": [1, 4, 8, 10, 11], "uniqu": [1, 5], "get_presigned_url": [1, 2], "protocol": 1, "retriev": [1, 8, 10, 12], "give": 1, "limit": [1, 3, 5, 12], "time": [1, 8, 10, 11], "pick": 1, "avail": [1, 2, 10, 11], "queri": [1, 2, 3, 5, 8, 11, 12], "upload_fil": [1, 2], "file_nam": [1, 2, 3, 9, 10, 11], "expires_in": 1, "bucket": [1, 6], "upload": [1, 2, 3, 8, 13], "author": 1, "storag": [1, 2, 6], "s3": [1, 10, 11], "az": 1, "isn": 1, "t": [1, 5, 11], "int": [1, 3, 5, 7, 8, 10, 11, 12], "amount": [1, 9], "second": [1, 4], "sign": 1, "datetim": [1, 10], "utcnow": 1, "Be": 1, "sure": 1, "posit": [1, 7], "integ": [1, 3, 8], "also": 1, "treat": [1, 5], "max_presigned_url_ttl": 1, "configur": 1, "must": [1, 5], "allowed_data_upload_bucket": 1, "data_upload_bucket": 1, "represent": [1, 3], "document": [1, 3], "upload_file_to_guid": [1, 2], "exist": [1, 3, 5, 6, 9, 12], "readm": 2, "python": [2, 9, 11], "github": [2, 7], "repo": 2, "setup": 2, "inform": [2, 3, 10], "along": 2, "quickstart": 2, "script": 2, "more": [2, 5, 7, 9, 10], "detail": [2, 7, 10], "about": [2, 3], "variou": 2, "function": [2, 3, 4, 5, 9, 10, 11, 12], "mostli": 2, "docstr": 2, "code": [2, 8], "helper": 2, "gen3index": [2, 3], "async_create_record": [2, 3], "async_get_record": [2, 3], "async_get_records_from_checksum": [2, 3], "async_get_records_on_pag": [2, 3], "async_get_with_param": [2, 3], "async_query_url": [2, 3], "async_update_record": [2, 3], "create_blank": [2, 3], "create_new_vers": [2, 3], "create_record": [2, 3], "delete_record": [2, 3, 8], "get_all_record": [2, 3], "get_guids_prefix": [2, 3], "get_latest_vers": [2, 3], "get_record": [2, 3], "get_record_doc": [2, 3], "get_records_on_pag": [2, 3], "get_stat": [2, 3], "get_url": [2, 3], "get_valid_guid": [2, 3], "get_vers": [2, 3, 4, 5], "get_with_param": [2, 3], "is_healthi": [2, 3, 4, 5], "query_url": [2, 3], "update_blank": [2, 3], "update_record": [2, 3], "job": 2, "gen3job": [2, 4, 10], "async_run_job_and_wait": [2, 4], "create_job": [2, 4], "get_output": [2, 4], "get_statu": [2, 4], "list_job": [2, 4], "metadata": [2, 3, 6, 9, 11], "gen3metadata": [2, 5], "async_cr": [2, 5], "async_create_alias": [2, 5], "async_delete_alia": [2, 5], "async_delete_alias": [2, 5], "async_get": [2, 5], "async_get_alias": [2, 5], "async_upd": [2, 5], "async_update_alias": [2, 5], "batch_creat": [2, 5], "creat": [2, 3, 4, 5, 6, 8, 10, 11], "create_alias": [2, 5], "create_index_key_path": [2, 5], "delete_alia": [2, 5], "delete_alias": [2, 5], "delete_index_key_path": [2, 5], "get_alias": [2, 5], "get_index_key_path": [2, 5], "updat": [2, 3, 5, 10, 11], "update_alias": [2, 5], "gen3object": [2, 6], "delete_object": [2, 6], "gen3queri": [2, 7], "graphql_queri": [2, 7], "raw_data_download": [2, 7], "submiss": 2, "gen3submiss": [2, 8], "create_program": [2, 8], "create_project": [2, 8], "delete_nod": [2, 8], "delete_program": [2, 8], "delete_project": [2, 8], "export_nod": [2, 8], "export_record": [2, 8], "get_dictionary_al": [2, 8], "get_dictionary_nod": [2, 8], "get_graphql_schema": [2, 8], "get_program": [2, 8], "get_project_dictionari": [2, 8], "get_project_manifest": [2, 8], "get_project": [2, 8], "open_project": [2, 8], "submit_fil": [2, 8], "submit_record": [2, 8], "tool": 2, "dr": [2, 9], "downloadmanag": [2, 9, 10], "cache_hosts_wts_token": [2, 9, 10], "get_fresh_token": [2, 9, 10], "resolve_object": [2, 9, 10], "user_access": [2, 9, 10], "downloadstatu": [2, 9, 10], "statu": [2, 4, 9, 10], "start_tim": [2, 9, 10], "end_tim": [2, 9, 10], "object_typ": [2, 9, 10], "hostnam": [2, 9, 10], "file_s": [2, 9, 10, 11], "updated_tim": [2, 9, 10], "created_tim": [2, 9, 10], "access_method": [2, 9, 10], "children": [2, 9, 10], "_manag": [2, 9, 10], "pprint": [2, 9, 10], "manifest": [2, 8, 9, 10, 11, 12], "md5sum": [2, 9, 10], "commons_url": [2, 9, 10, 11, 12], "create_object_list": [2, 9, 10], "load": [2, 9, 10], "load_manifest": [2, 9, 10], "download_drs_object": [], "download_files_in_drs_manifest": [2, 9, 10], "list_access_in_drs_manifest": [2, 9, 10], "list_drs_object": [2, 9, 10], "list_files_in_drs_manifest": [2, 9, 10], "current_dir": [2, 9, 11], "indexd_record_page_s": [2, 9, 11], "max_concurrent_request": [2, 9, 11, 12], "tmp_folder": [2, 9, 11], "async_download_object_manifest": [2, 9, 11], "size": [2, 3, 9, 10, 11], "md5": [2, 3, 9, 11], "acl": [2, 3, 9, 11], "prev_guid": [2, 9, 11], "threadcontrol": [2, 9, 11], "delete_all_guid": [2, 9, 11], "index_object_manifest": [2, 9, 11], "verifi": [2, 9], "async_verify_object_manifest": [2, 9, 11], "ingest": [2, 9], "column_to_use_as_guid": [2, 9, 12], "guid_type_for_indexed_file_object": [2, 9, 12], "guid_type_for_non_indexed_file_object": [2, 9, 12], "async_ingest_metadata_manifest": [2, 9, 12], "async_query_urls_from_indexd": [2, 9, 12], "gen3wsstorag": [2, 13], "copi": [2, 13], "download_url": [2, 13], "l": [2, 13], "ls_path": [2, 13], "rm": [2, 13], "rm_path": [2, 13], "upload_url": [2, 13], "modul": [2, 10, 11], "service_loc": [3, 4, 5], "public": [3, 5], "read": [3, 5, 11], "onli": [3, 5, 7, 8, 10, 11], "necessari": [3, 5], "basic": [3, 11, 12], "cred": 3, "async": [3, 4, 5, 9, 11, 12], "hash": [3, 11], "did": 3, "baseid": 3, "urls_metadata": 3, "version": [3, 4, 5], "_ssl": [3, 4, 5], "asynchron": [3, 4, 5], "dict": [3, 4, 5, 10, 11, 12], "eg": 3, "ab167e49d25b488939b1ede42752458b": 3, "associ": [3, 5], "made": 3, "where": [3, 5, 11, 12], "you": [3, 8, 11], "control": 3, "rbac": 3, "name": [3, 4, 8, 10, 11, 12, 13], "addit": [3, 5, 10, 11], "entri": [3, 11], "attach": [3, 5], "each": [3, 8, 10, 11], "group": 3, "previou": [3, 11], "checksum": [3, 10], "checksum_typ": 3, "match": [3, 5, 12], "param": [3, 5, 8, 10], "correspond": 3, "suppli": 3, "need": [3, 7, 10, 11], "handl": [3, 10], "hash_typ": 3, "whether": [3, 4, 5, 8, 11, 12], "ssl": [3, 4, 5], "pattern": [3, 12], "against": [3, 7, 8, 11, 12], "kwarg": [3, 4, 5], "bodi": 3, "dictionari": [3, 4, 5, 7, 8], "format": [3, 5, 8, 11], "blank": 3, "add": [3, 5], "sinc": 3, "content": [3, 13], "immut": 3, "want": [3, 8], "chang": [3, 11], "That": 3, "field": [3, 5, 7, 11, 12], "old": 3, "ad": 3, "least": 3, "one": [3, 5, 10, 11], "suffici": 3, "good": 3, "idea": 3, "number": [3, 7, 8, 11, 12], "noth": [3, 6], "dist_resolut": 3, "true": [3, 4, 5, 6, 7, 8, 10, 11, 12], "alia": [3, 5], "distribut": 3, "identifi": [3, 5, 9, 11], "boolean": 3, "we": [3, 11], "pagin": 3, "fals": [3, 5, 6, 10, 11], "start": [3, 4, 7, 8, 10], "prefix": 3, "rtype": 3, "has_vers": 3, "latest": 3, "exclud": 3, "without": [3, 5], "repres": [3, 5, 10], "info": [3, 11], "algorithm": 3, "count": 3, "valid": [3, 7], "file_st": 3, "like": [3, 5, 9, 11, 12], "signpost": 3, "healthi": [3, 4, 5], "rev": 3, "revis": 3, "simpl": 3, "consist": 3, "mechan": 3, "dispatch": 4, "job_nam": 4, "job_input": 4, "wait": 4, "output": [4, 5, 11, 12], "Will": [4, 7, 10], "sleep": 4, "linear": 4, "delai": 4, "until": [4, 10], "done": 4, "1": [4, 5, 8, 10, 11], "global": [4, 5], "input": [4, 10, 11], "job_id": 4, "previous": 4, "complet": [4, 11], "bool": [4, 5, 8, 10, 11, 12], "md": [5, 7, 10, 12], "admin_endpoint_suffix": 5, "admin": [5, 11], "alias": 5, "overwrit": 5, "what": 5, "end": [5, 10], "up": [5, 9], "blob": [5, 7], "asyncron": 5, "altern": [5, 11], "merg": 5, "AND": 5, "descript": 5, "metadata_list": 5, "specif": [5, 8, 11, 12], "expect": [5, 9, 11], "anoth": 5, "databas": 5, "return_full_metadata": 5, "10": [5, 7, 11], "offset": [5, 7], "0": [5, 7, 8, 11], "use_agg_md": 5, "off": 5, "logic": [5, 12], "filter": [5, 7], "b": [5, 11], "2": [5, 11], "have": [5, 11], "ar": [5, 7, 8, 9, 10, 11], "alwai": 5, "nest": 5, "c": [5, 11], "3": [5, 11], "same": [5, 11, 13], "whose": 5, "ani": [5, 10, 11], "But": 5, "differ": 5, "33": 5, "d": 5, "4": [5, 11], "e": [5, 10], "won": 5, "333": 5, "defin": [5, 8, 10], "api": [5, 8, 11], "just": [5, 11, 12], "max": 5, "num": 5, "OR": 5, "level": 6, "current": [6, 8, 10], "system": [6, 7, 8, 9], "elasticsearch": 7, "query_str": 7, "execut": [7, 8, 11], "graphql": [7, 8], "query_txt": [7, 8], "syntax": 7, "see": [7, 10, 11], "com": 7, "uc": 7, "cdi": 7, "guppi": 7, "master": 7, "doc": [7, 10], "data_typ": 7, "my_index": 7, "my_field": 7, "first": [7, 8], "filter_object": 7, "sort_object": 7, "verbos": [7, 8], "row": [7, 8, 11, 12], "sort": 7, "equal": 7, "respect": 7, "complex": 7, "appli": 7, "One": 7, "unaccess": 7, "regular": 7, "tier": 7, "mode": 7, "subject": [7, 8], "50": 7, "vital_statu": 7, "submitter_id": 7, "aliv": 7, "asc": 7, "sort_field": 7, "raw": [7, 11], "project_id": [7, 8], "my_program": 7, "my_project": 7, "submit": [8, 11], "export": [8, 10], "sheepdog": 8, "through": [8, 11], "peregrin": 8, "sub": 8, "program": [8, 11], "project": [8, 11], "dcf": 8, "node_nam": 8, "batch_siz": 8, "100": [8, 11], "node": 8, "how": [8, 11], "mani": [8, 11], "print": [8, 10], "progress": [8, 10], "log": [8, 10, 11, 12], "ccle": 8, "demograph": 8, "ordered_node_list": 8, "revers": 8, "graph": 8, "experi": 8, "empti": [8, 11], "uuid1": 8, "uuid2": 8, "node_typ": 8, "fileformat": 8, "which": [8, 10], "belong": 8, "either": 8, "tsv": [8, 11, 12], "screen": 8, "sampl": [8, 10], "ccle_sample_nod": 8, "d70b41b9": 8, "6f90": 8, "4714": 8, "8420": 8, "e043ab8b77b9": 8, "ccle_one_record": 8, "entir": 8, "schema": 8, "run": [8, 11], "introspect": 8, "regist": 8, "mark": 8, "open": [8, 10, 11], "mean": 8, "etc": 8, "max_tri": 8, "retri": 8, "fail": [8, 10], "chunk_siz": 8, "30": 8, "row_offset": 8, "spreadsheet": 8, "multipl": [8, 11], "csv": [8, 11, 12], "xlsx": 8, "worksheet": 8, "skip": 8, "data_spreadsheet": 8, "arrai": 8, "action": [9, 11], "These": 9, "broken": 9, "broad": 9, "categori": 9, "task": 9, "relat": 9, "persist": 9, "Such": 9, "mai": [9, 11], "involv": 9, "assign": 9, "everi": [9, 11], "alreadi": 9, "larg": 9, "most": 9, "util": 9, "capabl": 9, "make": [9, 11], "effici": 9, "main": 10, "datafil": 10, "manifest_1": 10, "my_common": 10, "org": 10, "gen3": [10, 11, 12], "my_credenti": 10, "howto": 10, "drsdownload": 10, "drs_download": 10, "download_list": 10, "show_progress": 10, "assist": 10, "minimum": 10, "interest": 10, "object_list": 10, "host": 10, "It": 10, "possibl": 10, "save_directori": 10, "unpack_packag": 10, "delete_unpacked_packag": 10, "directori": [10, 11], "call": [10, 13], "case": 10, "error": [10, 11, 12], "continu": 10, "save": 10, "show": 10, "bar": 10, "disabl": 10, "unpack": 10, "packag": 10, "after": 10, "them": [10, 11], "drs_hostnam": 10, "known": 10, "otherwis": 10, "success": 10, "resolv": 10, "permiss": 10, "wai": 10, "determin": [10, 11, 12], "reason": 10, "pend": 10, "objectid": 10, "datamanag": 10, "occur": 10, "attribut": [10, 11], "drsobjecttyp": 10, "unknown": 10, "factori": 10, "popul": [10, 12], "server": 10, "requir": 10, "byte": 10, "timestamp": 10, "last": 10, "g": 10, "child": 10, "bundl": 10, "self": 10, "indent": 10, "pretti": 10, "In": 10, "similar": 10, "linux": 10, "tree": 10, "command": [10, 11], "typic": 10, "discoveri": 10, "cach": 10, "files": 10, "static": 10, "bownload": 10, "successfulli": 10, "pars": [10, 11, 12, 13], "output_dir": 10, "conveni": 10, "infil": 10, "wrapper": 10, "cli": 10, "process": 11, "coroutin": 11, "asyncio": [11, 12], "librari": 11, "comma": 11, "header": 11, "download_manifest": 11, "per": [11, 12], "maximum": [11, 12], "desir": 11, "concurr": [11, 12], "across": 11, "thread": 11, "folder": 11, "place": 11, "temporari": 11, "write": 11, "safe": 11, "so": 11, "To": 11, "workaround": 11, "concat": 11, "output_filenam": [11, 12], "num_process": 11, "24": [11, 12], "input_manifest": 11, "python_subprocess_command": 11, "root": [11, 12], "domain": [11, 12], "live": [11, 12], "parallel": 11, "hit": 11, "total": 11, "help": 11, "everyth": 11, "attempt": 11, "By": 11, "someth": 11, "maco": 11, "x": 11, "python3": 11, "tab": 11, "session": 11, "column": [11, 12], "shown": 11, "below": 11, "255e396f": 11, "f1f8": 11, "11e9": 11, "9a07": 11, "0a80fada099c": 11, "473d83400bc1bc9dc635e334faddf33c": 11, "363455714": 11, "pdcdatastor": 11, "test1": 11, "0a80fada098c": 11, "473d83400bc1bc9dc635e334faddd33c": 11, "343434344": 11, "test2": 11, "0a80fada097c": 11, "473d83400bc1bc9dc635e334fadd433c": 11, "543434443": 11, "phs0001": 11, "phs0002": 11, "test3": 11, "0a80fada096c": 11, "test4": 11, "0a80fada010c": 11, "473d83400bc1bc9dc635e334fadde33c": 11, "test5": 11, "index_manifest": 11, "usag": 11, "py": 11, "giangb": 11, "planx": 11, "pla": 11, "net": 11, "manifest_fil": [11, 12], "path_to_manifest": 11, "replace_url": 11, "thread_num": 11, "api_kei": 11, "processed_fil": 11, "num_total_fil": 11, "synchron": 11, "warn": 11, "IF": 11, "know": 11, "THE": 11, "implic": 11, "manifest_file_delimit": [11, 12], "submit_additional_metadata_column": 11, "force_metadata_columns_even_if_empti": 11, "loop": 11, "password": [11, 12], "flag": 11, "replac": 11, "delimit": 11, "forc": 11, "creation": 11, "even": 11, "enabl": 11, "illustr": 11, "columna": 11, "columnb": 11, "columnc": 11, "dataa": 11, "datab": 11, "guid_exampl": 11, "md5_hash": 11, "fieldnam": 11, "There": 11, "those": 11, "abov": 11, "overrid": [11, 12], "assum": 11, "behavior": 11, "simpli": 11, "manifest_row_pars": [11, 12], "custom": 11, "import": 11, "verify_manifest": 11, "def": 11, "_get_authz_from_row": 11, "strip": 11, "parser": [11, 12], "verify_object_manifest": 11, "verif": 11, "error_nam": 11, "value_from_manifest": 11, "actual": 11, "value_from_indexd": 11, "93d9af72": 11, "b0f1": 11, "450c": 11, "a5c6": 11, "7d3d8d2083b4": 11, "dev": 11, "test": 11, "_get_acl_from_row": 11, "_get_file_name_from_row": 11, "_get_file_size_from_row": 11, "_get_guid_from_row": 11, "_get_md5_from_row": 11, "_get_urls_from_row": 11, "1692675811": [], "9771066": [], "indexd_field": [11, 12], "func_to_parse_row": [11, 12], "delimet": [11, 12], "metdata": 12, "ingest_manifest": 12, "NOT": 12, "guid_from_fil": 12, "_get_guid_for_row": 12, "indexed_file_object_guid": 12, "_query_for_associated_indexd_record_guid": 12, "guid_for_row": 12, "elsewher": 12, "metadata_sourc": 12, "1692675812": [], "3144128": [], "get_guid_from_fil": 12, "metadata_typ": 12, "dbgap": 12, "usual": 12, "fill": 12, "_guid_typ": 12, "is_indexed_file_object": 12, "lock": 12, "semaphor": 12, "semaphon": 12, "ammount": 12, "connect": 12, "wss": 13, "src_urlstr": 13, "dest_urlstr": 13, "appropri": 13, "src_w": 13, "src_wskei": 13, "dest_path": 13, "disk": 13, "w": 13, "wskei": 13, "ws_urlstr": 13, "form": 13, "src_path": 13, "dest_w": 13, "dest_wskei": 13, "1692676927": [], "2291234": [], "6143494": [], "1692716275": [], "1734753": [], "577429": [], "1692716527": [], "4222114": [], "9511294": [], "1692717039": [], "3338752": [], "744264": [], "1692741377": [], "0982177": [], "4559627": [], "1692743380": [], "4060478": [], "7860734": [], "1692743691": [], "983341": [], "1692743692": [], "4543839": [], "1692825679": [], "249731": [], "5510318": [], "1692886743": [], "381985": [], "8074749": [], "1693233058": [], "3038826": [], "6020522": [], "1693234093": [11, 12], "2159688": 11, "5807943": 12}, "objects": {"gen3.auth": [[0, 0, 1, "", "Gen3Auth"]], "gen3.auth.Gen3Auth": [[0, 1, 1, "", "curl"], [0, 1, 1, "", "get_access_token"], [0, 1, 1, "", "get_access_token_from_wts"], [0, 1, 1, "", "refresh_access_token"]], "gen3.file": [[1, 0, 1, "", "Gen3File"]], "gen3.file.Gen3File": [[1, 1, 1, "", "delete_file"], [1, 1, 1, "", "delete_file_locations"], [1, 1, 1, "", "download_single"], [1, 1, 1, "", "get_presigned_url"], [1, 1, 1, "", "upload_file"], [1, 1, 1, "", "upload_file_to_guid"]], "gen3.index": [[3, 0, 1, "", "Gen3Index"]], "gen3.index.Gen3Index": [[3, 1, 1, "", "async_create_record"], [3, 1, 1, "", "async_get_record"], [3, 1, 1, "", "async_get_records_from_checksum"], [3, 1, 1, "", "async_get_records_on_page"], [3, 1, 1, "", "async_get_with_params"], [3, 1, 1, "", "async_query_urls"], [3, 1, 1, "", "async_update_record"], [3, 1, 1, "", "create_blank"], [3, 1, 1, "", "create_new_version"], [3, 1, 1, "", "create_record"], [3, 1, 1, "", "delete_record"], [3, 1, 1, "", "get"], [3, 1, 1, "", "get_all_records"], [3, 1, 1, "", "get_guids_prefix"], [3, 1, 1, "", "get_latest_version"], [3, 1, 1, "", "get_record"], [3, 1, 1, "", "get_record_doc"], [3, 1, 1, "", "get_records"], [3, 1, 1, "", "get_records_on_page"], [3, 1, 1, "", "get_stats"], [3, 1, 1, "", "get_urls"], [3, 1, 1, "", "get_valid_guids"], [3, 1, 1, "", "get_version"], [3, 1, 1, "", "get_versions"], [3, 1, 1, "", "get_with_params"], [3, 1, 1, "", "is_healthy"], [3, 1, 1, "", "query_urls"], [3, 1, 1, "", "update_blank"], [3, 1, 1, "", "update_record"]], "gen3.jobs": [[4, 0, 1, "", "Gen3Jobs"]], "gen3.jobs.Gen3Jobs": [[4, 1, 1, "", "async_run_job_and_wait"], [4, 1, 1, "", "create_job"], [4, 1, 1, "", "get_output"], [4, 1, 1, "", "get_status"], [4, 1, 1, "", "get_version"], [4, 1, 1, "", "is_healthy"], [4, 1, 1, "", "list_jobs"]], "gen3.metadata": [[5, 0, 1, "", "Gen3Metadata"]], "gen3.metadata.Gen3Metadata": [[5, 1, 1, "", "async_create"], [5, 1, 1, "", "async_create_aliases"], [5, 1, 1, "", "async_delete_alias"], [5, 1, 1, "", "async_delete_aliases"], [5, 1, 1, "", "async_get"], [5, 1, 1, "", "async_get_aliases"], [5, 1, 1, "", "async_update"], [5, 1, 1, "", "async_update_aliases"], [5, 2, 1, "", "auth_provider"], [5, 1, 1, "", "batch_create"], [5, 1, 1, "", "create"], [5, 1, 1, "", "create_aliases"], [5, 1, 1, "", "create_index_key_path"], [5, 1, 1, "", "delete"], [5, 1, 1, "", "delete_alias"], [5, 1, 1, "", "delete_aliases"], [5, 1, 1, "", "delete_index_key_path"], [5, 2, 1, "", "endpoint"], [5, 1, 1, "", "get"], [5, 1, 1, "", "get_aliases"], [5, 1, 1, "", "get_index_key_paths"], [5, 1, 1, "", "get_version"], [5, 1, 1, "", "is_healthy"], [5, 1, 1, "", "query"], [5, 1, 1, "", "update"], [5, 1, 1, "", "update_aliases"]], "gen3.object": [[6, 0, 1, "", "Gen3Object"]], "gen3.object.Gen3Object": [[6, 1, 1, "", "delete_object"]], "gen3.query": [[7, 0, 1, "", "Gen3Query"]], "gen3.query.Gen3Query": [[7, 1, 1, "", "graphql_query"], [7, 1, 1, "", "query"], [7, 1, 1, "", "raw_data_download"]], "gen3.submission": [[8, 0, 1, "", "Gen3Submission"]], "gen3.submission.Gen3Submission": [[8, 1, 1, "", "create_program"], [8, 1, 1, "", "create_project"], [8, 1, 1, "", "delete_node"], [8, 1, 1, "", "delete_nodes"], [8, 1, 1, "", "delete_program"], [8, 1, 1, "", "delete_project"], [8, 1, 1, "", "delete_record"], [8, 1, 1, "", "delete_records"], [8, 1, 1, "", "export_node"], [8, 1, 1, "", "export_record"], [8, 1, 1, "", "get_dictionary_all"], [8, 1, 1, "", "get_dictionary_node"], [8, 1, 1, "", "get_graphql_schema"], [8, 1, 1, "", "get_programs"], [8, 1, 1, "", "get_project_dictionary"], [8, 1, 1, "", "get_project_manifest"], [8, 1, 1, "", "get_projects"], [8, 1, 1, "", "open_project"], [8, 1, 1, "", "query"], [8, 1, 1, "", "submit_file"], [8, 1, 1, "", "submit_record"]], "gen3": [[9, 3, 0, "-", "tools"]], "gen3.tools.download": [[10, 3, 0, "-", "drs_download"]], "gen3.tools.download.drs_download": [[10, 0, 1, "", "DownloadManager"], [10, 0, 1, "", "DownloadStatus"], [10, 0, 1, "", "Downloadable"], [10, 0, 1, "", "Manifest"], [10, 4, 1, "", "download_files_in_drs_manifest"], [10, 4, 1, "", "list_access_in_drs_manifest"], [10, 4, 1, "", "list_drs_object"], [10, 4, 1, "", "list_files_in_drs_manifest"]], "gen3.tools.download.drs_download.DownloadManager": [[10, 1, 1, "", "cache_hosts_wts_tokens"], [10, 1, 1, "", "download"], [10, 1, 1, "", "get_fresh_token"], [10, 1, 1, "", "resolve_objects"], [10, 1, 1, "", "user_access"]], "gen3.tools.download.drs_download.DownloadStatus": [[10, 2, 1, "", "end_time"], [10, 2, 1, "", "start_time"], [10, 2, 1, "", "status"]], "gen3.tools.download.drs_download.Downloadable": [[10, 2, 1, "", "_manager"], [10, 2, 1, "", "access_methods"], [10, 2, 1, "", "children"], [10, 2, 1, "", "created_time"], [10, 1, 1, "", "download"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 2, 1, "", "hostname"], [10, 2, 1, "", "object_id"], [10, 2, 1, "", "object_type"], [10, 1, 1, "", "pprint"], [10, 2, 1, "", "updated_time"]], "gen3.tools.download.drs_download.Manifest": [[10, 2, 1, "", "commons_url"], [10, 1, 1, "", "create_object_list"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 1, 1, "", "load"], [10, 1, 1, "", "load_manifest"], [10, 2, 1, "", "md5sum"], [10, 2, 1, "", "object_id"]], "gen3.tools.indexing": [[11, 3, 0, "-", "download_manifest"], [11, 3, 0, "-", "index_manifest"], [11, 3, 0, "-", "verify_manifest"]], "gen3.tools.indexing.download_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "INDEXD_RECORD_PAGE_SIZE"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 2, 1, "", "TMP_FOLDER"], [11, 4, 1, "", "async_download_object_manifest"]], "gen3.tools.indexing.index_manifest": [[11, 2, 1, "", "ACLS"], [11, 2, 1, "", "AUTHZ"], [11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "GUID"], [11, 2, 1, "", "MD5"], [11, 2, 1, "", "PREV_GUID"], [11, 2, 1, "", "SIZE"], [11, 0, 1, "", "ThreadControl"], [11, 2, 1, "", "URLS"], [11, 4, 1, "", "delete_all_guids"], [11, 4, 1, "", "index_object_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 4, 1, "", "async_verify_object_manifest"]], "gen3.tools.metadata": [[12, 3, 0, "-", "ingest_manifest"]], "gen3.tools.metadata.ingest_manifest": [[12, 2, 1, "", "COLUMN_TO_USE_AS_GUID"], [12, 2, 1, "", "GUID_TYPE_FOR_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [12, 4, 1, "", "async_ingest_metadata_manifest"], [12, 4, 1, "", "async_query_urls_from_indexd"]], "gen3.wss": [[13, 0, 1, "", "Gen3WsStorage"]], "gen3.wss.Gen3WsStorage": [[13, 1, 1, "", "copy"], [13, 1, 1, "", "download"], [13, 1, 1, "", "download_url"], [13, 1, 1, "", "ls"], [13, 1, 1, "", "ls_path"], [13, 1, 1, "", "rm"], [13, 1, 1, "", "rm_path"], [13, 1, 1, "", "upload"], [13, 1, 1, "", "upload_url"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:module", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "auth": 0, "helper": 0, "file": 1, "class": [1, 3, 4, 5, 6, 7, 8], "welcom": 2, "sdk": 2, "": 2, "document": 2, "indic": 2, "tabl": 2, "index": [3, 11], "job": 4, "metadata": [5, 12], "object": 6, "queri": 7, "submiss": 8, "tool": [9, 10, 11, 12], "dr": 10, "download": [10, 11], "verifi": 11, "ingest": 12, "workspac": 13, "storag": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Gen3 Auth Helper": [[0, "gen3-auth-helper"]], "Gen3 File Class": [[1, "gen3-file-class"]], "Welcome to Gen3 SDK\u2019s documentation!": [[2, "welcome-to-gen3-sdk-s-documentation"]], "Indices and tables": [[2, "indices-and-tables"]], "Gen3 Index Class": [[3, "gen3-index-class"]], "Gen3 Jobs Class": [[4, "gen3-jobs-class"]], "Gen3 Metadata Class": [[5, "gen3-metadata-class"]], "Gen3 Object Class": [[6, "gen3-object-class"]], "Gen3 Query Class": [[7, "gen3-query-class"]], "Gen3 Submission Class": [[8, "gen3-submission-class"]], "Gen3 Tools": [[9, "gen3-tools"]], "DRS Download Tools": [[10, "module-gen3.tools.download.drs_download"]], "Indexing Tools": [[11, "indexing-tools"]], "Download": [[11, "module-gen3.tools.indexing.download_manifest"]], "Index": [[11, "module-gen3.tools.indexing.index_manifest"]], "Verify": [[11, "module-gen3.tools.indexing.verify_manifest"]], "Metadata Tools": [[12, "metadata-tools"]], "Ingest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "Gen3 Workspace Storage": [[13, "gen3-workspace-storage"]]}, "indexentries": {"gen3auth (class in gen3.auth)": [[0, "gen3.auth.Gen3Auth"]], "curl() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.curl"]], "get_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token"]], "get_access_token_from_wts() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token_from_wts"]], "refresh_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.refresh_access_token"]], "gen3file (class in gen3.file)": [[1, "gen3.file.Gen3File"]], "delete_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file"]], "delete_file_locations() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file_locations"]], "download_single() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.download_single"]], "get_presigned_url() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.get_presigned_url"]], "upload_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file"]], "upload_file_to_guid() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file_to_guid"]], "gen3index (class in gen3.index)": [[3, "gen3.index.Gen3Index"]], "async_create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_create_record"]], "async_get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_record"]], "async_get_records_from_checksum() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_from_checksum"]], "async_get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_on_page"]], "async_get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_with_params"]], "async_query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_query_urls"]], "async_update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_update_record"]], "create_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_blank"]], "create_new_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_new_version"]], "create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_record"]], "delete_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.delete_record"]], "get() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get"]], "get_all_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_all_records"]], "get_guids_prefix() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_guids_prefix"]], "get_latest_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_latest_version"]], "get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record"]], "get_record_doc() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record_doc"]], "get_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records"]], "get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records_on_page"]], "get_stats() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_stats"]], "get_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_urls"]], "get_valid_guids() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_valid_guids"]], "get_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_version"]], "get_versions() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_versions"]], "get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_with_params"]], "is_healthy() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.is_healthy"]], "query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.query_urls"]], "update_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_blank"]], "update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_record"]], "gen3jobs (class in gen3.jobs)": [[4, "gen3.jobs.Gen3Jobs"]], "async_run_job_and_wait() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.async_run_job_and_wait"]], "create_job() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.create_job"]], "get_output() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_output"]], "get_status() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_status"]], "get_version() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_version"]], "is_healthy() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.is_healthy"]], "list_jobs() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.list_jobs"]], "gen3metadata (class in gen3.metadata)": [[5, "gen3.metadata.Gen3Metadata"]], "async_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create"]], "async_create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create_aliases"]], "async_delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_alias"]], "async_delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_aliases"]], "async_get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get"]], "async_get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get_aliases"]], "async_update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update"]], "async_update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update_aliases"]], "auth_provider (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.auth_provider"]], "batch_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.batch_create"]], "create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create"]], "create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_aliases"]], "create_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_index_key_path"]], "delete() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete"]], "delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_alias"]], "delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_aliases"]], "delete_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_index_key_path"]], "endpoint (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.endpoint"]], "get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get"]], "get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_aliases"]], "get_index_key_paths() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_index_key_paths"]], "get_version() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_version"]], "is_healthy() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.is_healthy"]], "query() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.query"]], "update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update"]], "update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update_aliases"]], "gen3object (class in gen3.object)": [[6, "gen3.object.Gen3Object"]], "delete_object() (gen3.object.gen3object method)": [[6, "gen3.object.Gen3Object.delete_object"]], "gen3query (class in gen3.query)": [[7, "gen3.query.Gen3Query"]], "graphql_query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.graphql_query"]], "query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.query"]], "raw_data_download() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.raw_data_download"]], "gen3submission (class in gen3.submission)": [[8, "gen3.submission.Gen3Submission"]], "create_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_program"]], "create_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_project"]], "delete_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_node"]], "delete_nodes() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_nodes"]], "delete_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_program"]], "delete_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_project"]], "delete_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_record"]], "delete_records() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_records"]], "export_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_node"]], "export_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_record"]], "get_dictionary_all() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_all"]], "get_dictionary_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_node"]], "get_graphql_schema() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_graphql_schema"]], "get_programs() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_programs"]], "get_project_dictionary() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_dictionary"]], "get_project_manifest() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_manifest"]], "get_projects() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_projects"]], "open_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.open_project"]], "query() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.query"]], "submit_file() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_file"]], "submit_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_record"]], "gen3.tools": [[9, "module-gen3.tools"]], "module": [[9, "module-gen3.tools"], [10, "module-gen3.tools.download.drs_download"], [11, "module-gen3.tools.indexing.download_manifest"], [11, "module-gen3.tools.indexing.index_manifest"], [11, "module-gen3.tools.indexing.verify_manifest"], [12, "module-gen3.tools.metadata.ingest_manifest"]], "downloadmanager (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadManager"]], "downloadstatus (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadStatus"]], "downloadable (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Downloadable"]], "manifest (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Manifest"]], "_manager (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable._manager"]], "access_methods (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.access_methods"]], "cache_hosts_wts_tokens() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.cache_hosts_wts_tokens"]], "children (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.children"]], "commons_url (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.commons_url"]], "create_object_list() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.create_object_list"]], "created_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.created_time"]], "download() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.download"]], "download() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.download"]], "download_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.download_files_in_drs_manifest"]], "end_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.end_time"]], "file_name (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_name"]], "file_name (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_name"]], "file_size (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_size"]], "file_size (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_size"]], "gen3.tools.download.drs_download": [[10, "module-gen3.tools.download.drs_download"]], "get_fresh_token() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.get_fresh_token"]], "hostname (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.hostname"]], "list_access_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_access_in_drs_manifest"]], "list_drs_object() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_drs_object"]], "list_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_files_in_drs_manifest"]], "load() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load"]], "load_manifest() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load_manifest"]], "md5sum (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.md5sum"]], "object_id (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_id"]], "object_id (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.object_id"]], "object_type (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_type"]], "pprint() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.pprint"]], "resolve_objects() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.resolve_objects"]], "start_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.start_time"]], "status (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.status"]], "updated_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.updated_time"]], "user_access() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.user_access"]], "acls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ACLS"]], "authz (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.AUTHZ"]], "current_dir (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.CURRENT_DIR"]], "guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.GUID"]], "indexd_record_page_size (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.INDEXD_RECORD_PAGE_SIZE"]], "max_concurrent_requests (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.MAX_CONCURRENT_REQUESTS"]], "max_concurrent_requests (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.MAX_CONCURRENT_REQUESTS"]], "md5 (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.MD5"]], "prev_guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.PREV_GUID"]], "size (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.SIZE"]], "tmp_folder (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.TMP_FOLDER"]], "threadcontrol (class in gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ThreadControl"]], "urls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.URLS"]], "async_download_object_manifest() (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.async_download_object_manifest"]], "async_verify_object_manifest() (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.async_verify_object_manifest"]], "delete_all_guids() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.delete_all_guids"]], "gen3.tools.indexing.download_manifest": [[11, "module-gen3.tools.indexing.download_manifest"]], "gen3.tools.indexing.index_manifest": [[11, "module-gen3.tools.indexing.index_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, "module-gen3.tools.indexing.verify_manifest"]], "index_object_manifest() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.index_object_manifest"]], "column_to_use_as_guid (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID"]], "guid_type_for_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_INDEXED_FILE_OBJECT"]], "guid_type_for_non_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"]], "max_concurrent_requests (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.MAX_CONCURRENT_REQUESTS"]], "async_ingest_metadata_manifest() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest"]], "async_query_urls_from_indexd() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_query_urls_from_indexd"]], "gen3.tools.metadata.ingest_manifest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "gen3wsstorage (class in gen3.wss)": [[13, "gen3.wss.Gen3WsStorage"]], "copy() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.copy"]], "download() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download"]], "download_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download_url"]], "ls() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls"]], "ls_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls_path"]], "rm() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm"]], "rm_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm_path"]], "upload() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload"]], "upload_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload_url"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["auth", "file", "index", "indexing", "jobs", "metadata", "object", "query", "submission", "tools", "tools/drs_pull", "tools/indexing", "tools/metadata", "wss"], "filenames": ["auth.rst", "file.rst", "index.rst", "indexing.rst", "jobs.rst", "metadata.rst", "object.rst", "query.rst", "submission.rst", "tools.rst", "tools/drs_pull.rst", "tools/indexing.rst", "tools/metadata.rst", "wss.rst"], "titles": ["Gen3 Auth Helper", "Gen3 File Class", "Welcome to Gen3 SDK\u2019s documentation!", "Gen3 Index Class", "Gen3 Jobs Class", "Gen3 Metadata Class", "Gen3 Object Class", "Gen3 Query Class", "Gen3 Submission Class", "Gen3 Tools", "DRS Download Tools", "Indexing Tools", "Metadata Tools", "Gen3 Workspace Storage"], "terms": {"class": [0, 2, 10, 11, 13], "gen3auth": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "endpoint": [0, 1, 2, 3, 4, 5, 7, 8, 13], "none": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "refresh_fil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "refresh_token": 0, "idp": 0, "client_credenti": 0, "client_scop": 0, "sourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "base": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "authbas": 0, "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "request": [0, 1, 3, 5, 8, 11, 12], "implement": 0, "order": [0, 8], "support": [0, 1, 5, 8, 11], "jwt": 0, "authent": 0, "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13], "access": [0, 1, 3, 7, 10], "token": [0, 10], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "provid": [0, 1, 3, 5, 7, 8, 12], "refresh": [0, 10], "file": [0, 2, 3, 4, 8, 9, 10, 11, 12, 13], "string": [0, 3, 5, 11, 13], "automat": 0, "when": [0, 3, 7, 10, 12], "thei": [0, 10], "expir": [0, 1], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "str": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12], "opt": 0, "The": [0, 1, 2, 3, 5, 8, 10, 11], "contain": [0, 2, 5, 8, 9, 10, 11, 12], "download": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "json": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "web": 0, "option": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "work": [0, 10], "workspac": [0, 2], "default": [0, 1, 3, 7, 8, 11, 12], "env": 0, "gen3_api_kei": 0, "credenti": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "set": [0, 1, 5, 10], "includ": [0, 3], "search": [0, 2, 3], "path": [0, 1, 5, 10, 11, 13], "valu": [0, 1, 3, 5, 7, 10, 11], "doe": [0, 12], "interpret": 0, "wt": [0, 10], "an": [0, 3, 6, 8, 10, 11], "accesstoken": 0, "If": [0, 1, 7, 11, 12], "can": [0, 3, 4, 8, 11, 12], "specifi": [0, 1, 3, 11, 13], "local": [0, 13], "indic": [0, 11], "environ": 0, "fenc": [0, 1], "tupl": [0, 3, 11, 12], "client_id": 0, "client_secret": 0, "oidc": 0, "client": [0, 3], "ha": [0, 11], "grant": 0, "allow": [0, 6, 8, 10, 11, 12], "obtain": [0, 10], "space": [0, 11], "separ": [0, 11], "list": [0, 1, 3, 4, 5, 7, 8, 10, 11, 13], "scope": [0, 1], "user": [0, 10, 12], "data": [0, 1, 3, 5, 7, 8, 10, 11], "openid": 0, "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "point": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "sandbox": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "common": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "while": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "profil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "page": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13], "instal": [0, 2, 11], "crdc": 0, "some": [0, 2], "arbitrari": 0, "kei": [0, 3, 5, 13], "variabl": [0, 7, 8], "rather": 0, "than": [0, 5], "pass": [0, 7, 8, 10], "argument": [0, 13], "constructor": 0, "id": [0, 1, 3, 5, 10, 11], "secret": 0, "note": [0, 3, 11, 12], "should": [0, 8, 11], "never": 0, "hardcod": 0, "http": [0, 7, 11, 12], "datacommon": 0, "o": 0, "gen3_oidc_client_creds_secret": 0, "initi": [0, 10], "follow": [0, 11], "curl": [0, 2], "given": [0, 3, 4, 5, 8, 10, 12, 13], "ex": [0, 11, 12], "return": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "respons": [0, 1, 3, 4, 5], "under": [0, 8, 13], "index": [0, 2, 5, 9], "authz": [0, 1, 2, 3, 9, 10, 11], "map": [0, 11], "get": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 13], "post": [0, 11], "put": 0, "delet": [0, 1, 2, 3, 5, 6, 8, 10, 11], "i": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12], "els": [0, 12], "filenam": [0, 8, 10, 11, 12], "get_access_token": [0, 2], "auto": [0, 2], "within": [0, 2, 9], "5": [0, 5], "minut": 0, "get_access_token_from_wt": [0, 2], "try": 0, "fetch": 0, "namespac": [0, 12], "refresh_access_token": [0, 2], "new": [0, 3], "gen3fil": [1, 2], "auth_provid": [1, 2, 3, 4, 5, 6, 7, 8, 13], "object": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13], "For": [1, 5, 6, 7, 8, 9, 11], "interact": [1, 3, 4, 5, 6, 8, 13], "manag": [1, 5, 10], "featur": [1, 6], "A": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "servic": [1, 3, 4, 5, 6, 8, 11, 12, 13], "presign": 1, "url": [1, 2, 3, 9, 10, 11, 12, 13], "right": 1, "now": [1, 8], "instanc": [1, 3, 6, 7, 8, 9, 10], "auth": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "delete_fil": [1, 2], "guid": [1, 2, 3, 5, 6, 9, 11, 12], "method": [1, 7, 10], "deprec": 1, "delete_file_loc": [1, 2, 6], "instead": [1, 7, 11], "all": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12], "locat": [1, 6], "store": [1, 3, 10], "remov": [1, 6, 11, 13], "its": [1, 3], "record": [1, 3, 5, 7, 8, 11, 12], "indexd": [1, 3, 6, 10, 11, 12], "uuid": [1, 3, 8], "text": [1, 7, 8], "result": [1, 8, 10, 11], "type": [1, 3, 4, 5, 7, 8, 10, 11, 12], "download_singl": [1, 2], "object_id": [1, 2, 9, 10], "singl": [1, 5, 8], "": [1, 4, 8, 10, 11], "uniqu": [1, 5], "get_presigned_url": [1, 2], "protocol": 1, "retriev": [1, 8, 10, 12], "give": 1, "limit": [1, 3, 5, 12], "time": [1, 8, 10, 11], "pick": 1, "avail": [1, 2, 10, 11], "queri": [1, 2, 3, 5, 8, 11, 12], "upload_fil": [1, 2], "file_nam": [1, 2, 3, 9, 10, 11], "expires_in": 1, "bucket": [1, 6], "upload": [1, 2, 3, 8, 13], "author": 1, "storag": [1, 2, 6], "s3": [1, 10, 11], "az": 1, "isn": 1, "t": [1, 5, 11], "int": [1, 3, 5, 7, 8, 10, 11, 12], "amount": [1, 9], "second": [1, 4], "sign": 1, "datetim": [1, 10], "utcnow": 1, "Be": 1, "sure": 1, "posit": [1, 7], "integ": [1, 3, 8], "also": 1, "treat": [1, 5], "max_presigned_url_ttl": 1, "configur": 1, "must": [1, 5], "allowed_data_upload_bucket": 1, "data_upload_bucket": 1, "represent": [1, 3], "document": [1, 3], "upload_file_to_guid": [1, 2], "exist": [1, 3, 5, 6, 9, 12], "readm": 2, "python": [2, 9, 11], "github": [2, 7], "repo": 2, "setup": 2, "inform": [2, 3, 10], "along": 2, "quickstart": 2, "script": 2, "more": [2, 5, 7, 9, 10], "detail": [2, 7, 10], "about": [2, 3], "variou": 2, "function": [2, 3, 4, 5, 9, 10, 11, 12], "mostli": 2, "docstr": 2, "code": [2, 8], "helper": 2, "gen3index": [2, 3], "async_create_record": [2, 3], "async_get_record": [2, 3], "async_get_records_from_checksum": [2, 3], "async_get_records_on_pag": [2, 3], "async_get_with_param": [2, 3], "async_query_url": [2, 3], "async_update_record": [2, 3], "create_blank": [2, 3], "create_new_vers": [2, 3], "create_record": [2, 3], "delete_record": [2, 3, 8], "get_all_record": [2, 3], "get_guids_prefix": [2, 3], "get_latest_vers": [2, 3], "get_record": [2, 3], "get_record_doc": [2, 3], "get_records_on_pag": [2, 3], "get_stat": [2, 3], "get_url": [2, 3], "get_valid_guid": [2, 3], "get_vers": [2, 3, 4, 5], "get_with_param": [2, 3], "is_healthi": [2, 3, 4, 5], "query_url": [2, 3], "update_blank": [2, 3], "update_record": [2, 3], "job": 2, "gen3job": [2, 4, 10], "async_run_job_and_wait": [2, 4], "create_job": [2, 4], "get_output": [2, 4], "get_statu": [2, 4], "list_job": [2, 4], "metadata": [2, 3, 6, 9, 11], "gen3metadata": [2, 5], "async_cr": [2, 5], "async_create_alias": [2, 5], "async_delete_alia": [2, 5], "async_delete_alias": [2, 5], "async_get": [2, 5], "async_get_alias": [2, 5], "async_upd": [2, 5], "async_update_alias": [2, 5], "batch_creat": [2, 5], "creat": [2, 3, 4, 5, 6, 8, 10, 11], "create_alias": [2, 5], "create_index_key_path": [2, 5], "delete_alia": [2, 5], "delete_alias": [2, 5], "delete_index_key_path": [2, 5], "get_alias": [2, 5], "get_index_key_path": [2, 5], "updat": [2, 3, 5, 10, 11], "update_alias": [2, 5], "gen3object": [2, 6], "delete_object": [2, 6], "gen3queri": [2, 7], "graphql_queri": [2, 7], "raw_data_download": [2, 7], "submiss": 2, "gen3submiss": [2, 8], "create_program": [2, 8], "create_project": [2, 8], "delete_nod": [2, 8], "delete_program": [2, 8], "delete_project": [2, 8], "export_nod": [2, 8], "export_record": [2, 8], "get_dictionary_al": [2, 8], "get_dictionary_nod": [2, 8], "get_graphql_schema": [2, 8], "get_program": [2, 8], "get_project_dictionari": [2, 8], "get_project_manifest": [2, 8], "get_project": [2, 8], "open_project": [2, 8], "submit_fil": [2, 8], "submit_record": [2, 8], "tool": 2, "dr": [2, 9], "downloadmanag": [2, 9, 10], "cache_hosts_wts_token": [2, 9, 10], "get_fresh_token": [2, 9, 10], "resolve_object": [2, 9, 10], "user_access": [2, 9, 10], "downloadstatu": [2, 9, 10], "statu": [2, 4, 9, 10], "start_tim": [2, 9, 10], "end_tim": [2, 9, 10], "object_typ": [2, 9, 10], "hostnam": [2, 9, 10], "file_s": [2, 9, 10, 11], "updated_tim": [2, 9, 10], "created_tim": [2, 9, 10], "access_method": [2, 9, 10], "children": [2, 9, 10], "_manag": [2, 9, 10], "pprint": [2, 9, 10], "manifest": [2, 8, 9, 10, 11, 12], "md5sum": [2, 9, 10], "commons_url": [2, 9, 10, 11, 12], "create_object_list": [2, 9, 10], "load": [2, 9, 10], "load_manifest": [2, 9, 10], "download_drs_object": [], "download_files_in_drs_manifest": [2, 9, 10], "list_access_in_drs_manifest": [2, 9, 10], "list_drs_object": [2, 9, 10], "list_files_in_drs_manifest": [2, 9, 10], "current_dir": [2, 9, 11], "indexd_record_page_s": [2, 9, 11], "max_concurrent_request": [2, 9, 11, 12], "tmp_folder": [2, 9, 11], "async_download_object_manifest": [2, 9, 11], "size": [2, 3, 9, 10, 11], "md5": [2, 3, 9, 11], "acl": [2, 3, 9, 11], "prev_guid": [2, 9, 11], "threadcontrol": [2, 9, 11], "delete_all_guid": [2, 9, 11], "index_object_manifest": [2, 9, 11], "verifi": [2, 9], "async_verify_object_manifest": [2, 9, 11], "ingest": [2, 9], "column_to_use_as_guid": [2, 9, 12], "guid_type_for_indexed_file_object": [2, 9, 12], "guid_type_for_non_indexed_file_object": [2, 9, 12], "async_ingest_metadata_manifest": [2, 9, 12], "async_query_urls_from_indexd": [2, 9, 12], "gen3wsstorag": [2, 13], "copi": [2, 13], "download_url": [2, 13], "l": [2, 13], "ls_path": [2, 13], "rm": [2, 13], "rm_path": [2, 13], "upload_url": [2, 13], "modul": [2, 10, 11], "service_loc": [3, 4, 5], "public": [3, 5], "read": [3, 5, 11], "onli": [3, 5, 7, 8, 10, 11], "necessari": [3, 5], "basic": [3, 11, 12], "cred": 3, "async": [3, 4, 5, 9, 11, 12], "hash": [3, 11], "did": 3, "baseid": 3, "urls_metadata": 3, "version": [3, 4, 5], "_ssl": [3, 4, 5], "asynchron": [3, 4, 5], "dict": [3, 4, 5, 10, 11, 12], "eg": 3, "ab167e49d25b488939b1ede42752458b": 3, "associ": [3, 5], "made": 3, "where": [3, 5, 11, 12], "you": [3, 8, 11], "control": 3, "rbac": 3, "name": [3, 4, 8, 10, 11, 12, 13], "addit": [3, 5, 10, 11], "entri": [3, 11], "attach": [3, 5], "each": [3, 8, 10, 11], "group": 3, "previou": [3, 11], "checksum": [3, 10], "checksum_typ": 3, "match": [3, 5, 12], "param": [3, 5, 8, 10], "correspond": 3, "suppli": 3, "need": [3, 7, 10, 11], "handl": [3, 10], "hash_typ": 3, "whether": [3, 4, 5, 8, 11, 12], "ssl": [3, 4, 5], "pattern": [3, 12], "against": [3, 7, 8, 11, 12], "kwarg": [3, 4, 5], "bodi": 3, "dictionari": [3, 4, 5, 7, 8], "format": [3, 5, 8, 11], "blank": 3, "add": [3, 5], "sinc": 3, "content": [3, 13], "immut": 3, "want": [3, 8], "chang": [3, 11], "That": 3, "field": [3, 5, 7, 11, 12], "old": 3, "ad": 3, "least": 3, "one": [3, 5, 10, 11], "suffici": 3, "good": 3, "idea": 3, "number": [3, 7, 8, 11, 12], "noth": [3, 6], "dist_resolut": 3, "true": [3, 4, 5, 6, 7, 8, 10, 11, 12], "alia": [3, 5], "distribut": 3, "identifi": [3, 5, 9, 11], "boolean": 3, "we": [3, 11], "pagin": 3, "fals": [3, 5, 6, 10, 11], "start": [3, 4, 7, 8, 10], "prefix": 3, "rtype": 3, "has_vers": 3, "latest": 3, "exclud": 3, "without": [3, 5], "repres": [3, 5, 10], "info": [3, 11], "algorithm": 3, "count": 3, "valid": [3, 7], "file_st": 3, "like": [3, 5, 9, 11, 12], "signpost": 3, "healthi": [3, 4, 5], "rev": 3, "revis": 3, "simpl": 3, "consist": 3, "mechan": 3, "dispatch": 4, "job_nam": 4, "job_input": 4, "wait": 4, "output": [4, 5, 11, 12], "Will": [4, 7, 10], "sleep": 4, "linear": 4, "delai": 4, "until": [4, 10], "done": 4, "1": [4, 5, 8, 10, 11], "global": [4, 5], "input": [4, 10, 11], "job_id": 4, "previous": 4, "complet": [4, 11], "bool": [4, 5, 8, 10, 11, 12], "md": [5, 7, 10, 12], "admin_endpoint_suffix": 5, "admin": [5, 11], "alias": 5, "overwrit": 5, "what": 5, "end": [5, 10], "up": [5, 9], "blob": [5, 7], "asyncron": 5, "altern": [5, 11], "merg": 5, "AND": 5, "descript": 5, "metadata_list": 5, "specif": [5, 8, 11, 12], "expect": [5, 9, 11], "anoth": 5, "databas": 5, "return_full_metadata": 5, "10": [5, 7, 11], "offset": [5, 7], "0": [5, 7, 8, 11], "use_agg_md": 5, "off": 5, "logic": [5, 12], "filter": [5, 7], "b": [5, 11], "2": [5, 11], "have": [5, 11], "ar": [5, 7, 8, 9, 10, 11], "alwai": 5, "nest": 5, "c": [5, 11], "3": [5, 11], "same": [5, 11, 13], "whose": 5, "ani": [5, 10, 11], "But": 5, "differ": 5, "33": 5, "d": 5, "4": [5, 11], "e": [5, 10], "won": 5, "333": 5, "defin": [5, 8, 10], "api": [5, 8, 11], "just": [5, 11, 12], "max": 5, "num": 5, "OR": 5, "level": 6, "current": [6, 8, 10], "system": [6, 7, 8, 9], "elasticsearch": 7, "query_str": 7, "execut": [7, 8, 11], "graphql": [7, 8], "query_txt": [7, 8], "syntax": 7, "see": [7, 10, 11], "com": 7, "uc": 7, "cdi": 7, "guppi": 7, "master": 7, "doc": [7, 10], "data_typ": 7, "my_index": 7, "my_field": 7, "first": [7, 8], "filter_object": 7, "sort_object": 7, "verbos": [7, 8], "row": [7, 8, 11, 12], "sort": 7, "equal": 7, "respect": 7, "complex": 7, "appli": 7, "One": 7, "unaccess": 7, "regular": 7, "tier": 7, "mode": 7, "subject": [7, 8], "50": 7, "vital_statu": 7, "submitter_id": 7, "aliv": 7, "asc": 7, "sort_field": 7, "raw": [7, 11], "project_id": [7, 8], "my_program": 7, "my_project": 7, "submit": [8, 11], "export": [8, 10], "sheepdog": 8, "through": [8, 11], "peregrin": 8, "sub": 8, "program": [8, 11], "project": [8, 11], "dcf": 8, "node_nam": 8, "batch_siz": 8, "100": [8, 11], "node": 8, "how": [8, 11], "mani": [8, 11], "print": [8, 10], "progress": [8, 10], "log": [8, 10, 11, 12], "ccle": 8, "demograph": 8, "ordered_node_list": 8, "revers": 8, "graph": 8, "experi": 8, "empti": [8, 11], "uuid1": 8, "uuid2": 8, "node_typ": 8, "fileformat": 8, "which": [8, 10], "belong": 8, "either": 8, "tsv": [8, 11, 12], "screen": 8, "sampl": [8, 10], "ccle_sample_nod": 8, "d70b41b9": 8, "6f90": 8, "4714": 8, "8420": 8, "e043ab8b77b9": 8, "ccle_one_record": 8, "entir": 8, "schema": 8, "run": [8, 11], "introspect": 8, "regist": 8, "mark": 8, "open": [8, 10, 11], "mean": 8, "etc": 8, "max_tri": 8, "retri": 8, "fail": [8, 10], "chunk_siz": 8, "30": 8, "row_offset": 8, "spreadsheet": 8, "multipl": [8, 11], "csv": [8, 11, 12], "xlsx": 8, "worksheet": 8, "skip": 8, "data_spreadsheet": 8, "arrai": 8, "action": [9, 11], "These": 9, "broken": 9, "broad": 9, "categori": 9, "task": 9, "relat": 9, "persist": 9, "Such": 9, "mai": [9, 11], "involv": 9, "assign": 9, "everi": [9, 11], "alreadi": 9, "larg": 9, "most": 9, "util": 9, "capabl": 9, "make": [9, 11], "effici": 9, "main": 10, "datafil": 10, "manifest_1": 10, "my_common": 10, "org": 10, "gen3": [10, 11, 12], "my_credenti": 10, "howto": 10, "drsdownload": 10, "drs_download": 10, "download_list": 10, "show_progress": 10, "assist": 10, "minimum": 10, "interest": 10, "object_list": 10, "host": 10, "It": 10, "possibl": 10, "save_directori": 10, "unpack_packag": 10, "delete_unpacked_packag": 10, "directori": [10, 11], "call": [10, 13], "case": 10, "error": [10, 11, 12], "continu": 10, "save": 10, "show": 10, "bar": 10, "disabl": 10, "unpack": 10, "packag": 10, "after": 10, "them": [10, 11], "drs_hostnam": 10, "known": 10, "otherwis": 10, "success": 10, "resolv": 10, "permiss": 10, "wai": 10, "determin": [10, 11, 12], "reason": 10, "pend": 10, "objectid": 10, "datamanag": 10, "occur": 10, "attribut": [10, 11], "drsobjecttyp": 10, "unknown": 10, "factori": 10, "popul": [10, 12], "server": 10, "requir": 10, "byte": 10, "timestamp": 10, "last": 10, "g": 10, "child": 10, "bundl": 10, "self": 10, "indent": 10, "pretti": 10, "In": 10, "similar": 10, "linux": 10, "tree": 10, "command": [10, 11], "typic": 10, "discoveri": 10, "cach": 10, "files": 10, "static": 10, "bownload": 10, "successfulli": 10, "pars": [10, 11, 12, 13], "output_dir": 10, "conveni": 10, "infil": 10, "wrapper": 10, "cli": 10, "process": 11, "coroutin": 11, "asyncio": [11, 12], "librari": 11, "comma": 11, "header": 11, "download_manifest": 11, "per": [11, 12], "maximum": [11, 12], "desir": 11, "concurr": [11, 12], "across": 11, "thread": 11, "folder": 11, "place": 11, "temporari": 11, "write": 11, "safe": 11, "so": 11, "To": 11, "workaround": 11, "concat": 11, "output_filenam": [11, 12], "num_process": 11, "24": [11, 12], "input_manifest": 11, "python_subprocess_command": 11, "root": [11, 12], "domain": [11, 12], "live": [11, 12], "parallel": 11, "hit": 11, "total": 11, "help": 11, "everyth": 11, "attempt": 11, "By": 11, "someth": 11, "maco": 11, "x": 11, "python3": 11, "tab": 11, "session": 11, "column": [11, 12], "shown": 11, "below": 11, "255e396f": 11, "f1f8": 11, "11e9": 11, "9a07": 11, "0a80fada099c": 11, "473d83400bc1bc9dc635e334faddf33c": 11, "363455714": 11, "pdcdatastor": 11, "test1": 11, "0a80fada098c": 11, "473d83400bc1bc9dc635e334faddd33c": 11, "343434344": 11, "test2": 11, "0a80fada097c": 11, "473d83400bc1bc9dc635e334fadd433c": 11, "543434443": 11, "phs0001": 11, "phs0002": 11, "test3": 11, "0a80fada096c": 11, "test4": 11, "0a80fada010c": 11, "473d83400bc1bc9dc635e334fadde33c": 11, "test5": 11, "index_manifest": 11, "usag": 11, "py": 11, "giangb": 11, "planx": 11, "pla": 11, "net": 11, "manifest_fil": [11, 12], "path_to_manifest": 11, "replace_url": 11, "thread_num": 11, "api_kei": 11, "processed_fil": 11, "num_total_fil": 11, "synchron": 11, "warn": 11, "IF": 11, "know": 11, "THE": 11, "implic": 11, "manifest_file_delimit": [11, 12], "submit_additional_metadata_column": 11, "force_metadata_columns_even_if_empti": 11, "loop": 11, "password": [11, 12], "flag": 11, "replac": 11, "delimit": 11, "forc": 11, "creation": 11, "even": 11, "enabl": 11, "illustr": 11, "columna": 11, "columnb": 11, "columnc": 11, "dataa": 11, "datab": 11, "guid_exampl": 11, "md5_hash": 11, "fieldnam": 11, "There": 11, "those": 11, "abov": 11, "overrid": [11, 12], "assum": 11, "behavior": 11, "simpli": 11, "manifest_row_pars": [11, 12], "custom": 11, "import": 11, "verify_manifest": 11, "def": 11, "_get_authz_from_row": 11, "strip": 11, "parser": [11, 12], "verify_object_manifest": 11, "verif": 11, "error_nam": 11, "value_from_manifest": 11, "actual": 11, "value_from_indexd": 11, "93d9af72": 11, "b0f1": 11, "450c": 11, "a5c6": 11, "7d3d8d2083b4": 11, "dev": 11, "test": 11, "_get_acl_from_row": 11, "_get_file_name_from_row": 11, "_get_file_size_from_row": 11, "_get_guid_from_row": 11, "_get_md5_from_row": 11, "_get_urls_from_row": 11, "1692675811": [], "9771066": [], "indexd_field": [11, 12], "func_to_parse_row": [11, 12], "delimet": [11, 12], "metdata": 12, "ingest_manifest": 12, "NOT": 12, "guid_from_fil": 12, "_get_guid_for_row": 12, "indexed_file_object_guid": 12, "_query_for_associated_indexd_record_guid": 12, "guid_for_row": 12, "elsewher": 12, "metadata_sourc": 12, "1692675812": [], "3144128": [], "get_guid_from_fil": 12, "metadata_typ": 12, "dbgap": 12, "usual": 12, "fill": 12, "_guid_typ": 12, "is_indexed_file_object": 12, "lock": 12, "semaphor": 12, "semaphon": 12, "ammount": 12, "connect": 12, "wss": 13, "src_urlstr": 13, "dest_urlstr": 13, "appropri": 13, "src_w": 13, "src_wskei": 13, "dest_path": 13, "disk": 13, "w": 13, "wskei": 13, "ws_urlstr": 13, "form": 13, "src_path": 13, "dest_w": 13, "dest_wskei": 13, "1692676927": [], "2291234": [], "6143494": [], "1692716275": [], "1734753": [], "577429": [], "1692716527": [], "4222114": [], "9511294": [], "1692717039": [], "3338752": [], "744264": [], "1692741377": [], "0982177": [], "4559627": [], "1692743380": [], "4060478": [], "7860734": [], "1692743691": [], "983341": [], "1692743692": [], "4543839": [], "1692825679": [], "249731": [], "5510318": [], "1692886743": [], "381985": [], "8074749": [], "1693233058": [], "3038826": [], "6020522": [], "1693234093": [], "2159688": [], "5807943": [], "1693236046": [11, 12], "1047835": 11, "485695": 12}, "objects": {"gen3.auth": [[0, 0, 1, "", "Gen3Auth"]], "gen3.auth.Gen3Auth": [[0, 1, 1, "", "curl"], [0, 1, 1, "", "get_access_token"], [0, 1, 1, "", "get_access_token_from_wts"], [0, 1, 1, "", "refresh_access_token"]], "gen3.file": [[1, 0, 1, "", "Gen3File"]], "gen3.file.Gen3File": [[1, 1, 1, "", "delete_file"], [1, 1, 1, "", "delete_file_locations"], [1, 1, 1, "", "download_single"], [1, 1, 1, "", "get_presigned_url"], [1, 1, 1, "", "upload_file"], [1, 1, 1, "", "upload_file_to_guid"]], "gen3.index": [[3, 0, 1, "", "Gen3Index"]], "gen3.index.Gen3Index": [[3, 1, 1, "", "async_create_record"], [3, 1, 1, "", "async_get_record"], [3, 1, 1, "", "async_get_records_from_checksum"], [3, 1, 1, "", "async_get_records_on_page"], [3, 1, 1, "", "async_get_with_params"], [3, 1, 1, "", "async_query_urls"], [3, 1, 1, "", "async_update_record"], [3, 1, 1, "", "create_blank"], [3, 1, 1, "", "create_new_version"], [3, 1, 1, "", "create_record"], [3, 1, 1, "", "delete_record"], [3, 1, 1, "", "get"], [3, 1, 1, "", "get_all_records"], [3, 1, 1, "", "get_guids_prefix"], [3, 1, 1, "", "get_latest_version"], [3, 1, 1, "", "get_record"], [3, 1, 1, "", "get_record_doc"], [3, 1, 1, "", "get_records"], [3, 1, 1, "", "get_records_on_page"], [3, 1, 1, "", "get_stats"], [3, 1, 1, "", "get_urls"], [3, 1, 1, "", "get_valid_guids"], [3, 1, 1, "", "get_version"], [3, 1, 1, "", "get_versions"], [3, 1, 1, "", "get_with_params"], [3, 1, 1, "", "is_healthy"], [3, 1, 1, "", "query_urls"], [3, 1, 1, "", "update_blank"], [3, 1, 1, "", "update_record"]], "gen3.jobs": [[4, 0, 1, "", "Gen3Jobs"]], "gen3.jobs.Gen3Jobs": [[4, 1, 1, "", "async_run_job_and_wait"], [4, 1, 1, "", "create_job"], [4, 1, 1, "", "get_output"], [4, 1, 1, "", "get_status"], [4, 1, 1, "", "get_version"], [4, 1, 1, "", "is_healthy"], [4, 1, 1, "", "list_jobs"]], "gen3.metadata": [[5, 0, 1, "", "Gen3Metadata"]], "gen3.metadata.Gen3Metadata": [[5, 1, 1, "", "async_create"], [5, 1, 1, "", "async_create_aliases"], [5, 1, 1, "", "async_delete_alias"], [5, 1, 1, "", "async_delete_aliases"], [5, 1, 1, "", "async_get"], [5, 1, 1, "", "async_get_aliases"], [5, 1, 1, "", "async_update"], [5, 1, 1, "", "async_update_aliases"], [5, 2, 1, "", "auth_provider"], [5, 1, 1, "", "batch_create"], [5, 1, 1, "", "create"], [5, 1, 1, "", "create_aliases"], [5, 1, 1, "", "create_index_key_path"], [5, 1, 1, "", "delete"], [5, 1, 1, "", "delete_alias"], [5, 1, 1, "", "delete_aliases"], [5, 1, 1, "", "delete_index_key_path"], [5, 2, 1, "", "endpoint"], [5, 1, 1, "", "get"], [5, 1, 1, "", "get_aliases"], [5, 1, 1, "", "get_index_key_paths"], [5, 1, 1, "", "get_version"], [5, 1, 1, "", "is_healthy"], [5, 1, 1, "", "query"], [5, 1, 1, "", "update"], [5, 1, 1, "", "update_aliases"]], "gen3.object": [[6, 0, 1, "", "Gen3Object"]], "gen3.object.Gen3Object": [[6, 1, 1, "", "delete_object"]], "gen3.query": [[7, 0, 1, "", "Gen3Query"]], "gen3.query.Gen3Query": [[7, 1, 1, "", "graphql_query"], [7, 1, 1, "", "query"], [7, 1, 1, "", "raw_data_download"]], "gen3.submission": [[8, 0, 1, "", "Gen3Submission"]], "gen3.submission.Gen3Submission": [[8, 1, 1, "", "create_program"], [8, 1, 1, "", "create_project"], [8, 1, 1, "", "delete_node"], [8, 1, 1, "", "delete_nodes"], [8, 1, 1, "", "delete_program"], [8, 1, 1, "", "delete_project"], [8, 1, 1, "", "delete_record"], [8, 1, 1, "", "delete_records"], [8, 1, 1, "", "export_node"], [8, 1, 1, "", "export_record"], [8, 1, 1, "", "get_dictionary_all"], [8, 1, 1, "", "get_dictionary_node"], [8, 1, 1, "", "get_graphql_schema"], [8, 1, 1, "", "get_programs"], [8, 1, 1, "", "get_project_dictionary"], [8, 1, 1, "", "get_project_manifest"], [8, 1, 1, "", "get_projects"], [8, 1, 1, "", "open_project"], [8, 1, 1, "", "query"], [8, 1, 1, "", "submit_file"], [8, 1, 1, "", "submit_record"]], "gen3": [[9, 3, 0, "-", "tools"]], "gen3.tools.download": [[10, 3, 0, "-", "drs_download"]], "gen3.tools.download.drs_download": [[10, 0, 1, "", "DownloadManager"], [10, 0, 1, "", "DownloadStatus"], [10, 0, 1, "", "Downloadable"], [10, 0, 1, "", "Manifest"], [10, 4, 1, "", "download_files_in_drs_manifest"], [10, 4, 1, "", "list_access_in_drs_manifest"], [10, 4, 1, "", "list_drs_object"], [10, 4, 1, "", "list_files_in_drs_manifest"]], "gen3.tools.download.drs_download.DownloadManager": [[10, 1, 1, "", "cache_hosts_wts_tokens"], [10, 1, 1, "", "download"], [10, 1, 1, "", "get_fresh_token"], [10, 1, 1, "", "resolve_objects"], [10, 1, 1, "", "user_access"]], "gen3.tools.download.drs_download.DownloadStatus": [[10, 2, 1, "", "end_time"], [10, 2, 1, "", "start_time"], [10, 2, 1, "", "status"]], "gen3.tools.download.drs_download.Downloadable": [[10, 2, 1, "", "_manager"], [10, 2, 1, "", "access_methods"], [10, 2, 1, "", "children"], [10, 2, 1, "", "created_time"], [10, 1, 1, "", "download"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 2, 1, "", "hostname"], [10, 2, 1, "", "object_id"], [10, 2, 1, "", "object_type"], [10, 1, 1, "", "pprint"], [10, 2, 1, "", "updated_time"]], "gen3.tools.download.drs_download.Manifest": [[10, 2, 1, "", "commons_url"], [10, 1, 1, "", "create_object_list"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 1, 1, "", "load"], [10, 1, 1, "", "load_manifest"], [10, 2, 1, "", "md5sum"], [10, 2, 1, "", "object_id"]], "gen3.tools.indexing": [[11, 3, 0, "-", "download_manifest"], [11, 3, 0, "-", "index_manifest"], [11, 3, 0, "-", "verify_manifest"]], "gen3.tools.indexing.download_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "INDEXD_RECORD_PAGE_SIZE"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 2, 1, "", "TMP_FOLDER"], [11, 4, 1, "", "async_download_object_manifest"]], "gen3.tools.indexing.index_manifest": [[11, 2, 1, "", "ACLS"], [11, 2, 1, "", "AUTHZ"], [11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "GUID"], [11, 2, 1, "", "MD5"], [11, 2, 1, "", "PREV_GUID"], [11, 2, 1, "", "SIZE"], [11, 0, 1, "", "ThreadControl"], [11, 2, 1, "", "URLS"], [11, 4, 1, "", "delete_all_guids"], [11, 4, 1, "", "index_object_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 4, 1, "", "async_verify_object_manifest"]], "gen3.tools.metadata": [[12, 3, 0, "-", "ingest_manifest"]], "gen3.tools.metadata.ingest_manifest": [[12, 2, 1, "", "COLUMN_TO_USE_AS_GUID"], [12, 2, 1, "", "GUID_TYPE_FOR_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [12, 4, 1, "", "async_ingest_metadata_manifest"], [12, 4, 1, "", "async_query_urls_from_indexd"]], "gen3.wss": [[13, 0, 1, "", "Gen3WsStorage"]], "gen3.wss.Gen3WsStorage": [[13, 1, 1, "", "copy"], [13, 1, 1, "", "download"], [13, 1, 1, "", "download_url"], [13, 1, 1, "", "ls"], [13, 1, 1, "", "ls_path"], [13, 1, 1, "", "rm"], [13, 1, 1, "", "rm_path"], [13, 1, 1, "", "upload"], [13, 1, 1, "", "upload_url"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:module", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "auth": 0, "helper": 0, "file": 1, "class": [1, 3, 4, 5, 6, 7, 8], "welcom": 2, "sdk": 2, "": 2, "document": 2, "indic": 2, "tabl": 2, "index": [3, 11], "job": 4, "metadata": [5, 12], "object": 6, "queri": 7, "submiss": 8, "tool": [9, 10, 11, 12], "dr": 10, "download": [10, 11], "verifi": 11, "ingest": 12, "workspac": 13, "storag": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Gen3 Auth Helper": [[0, "gen3-auth-helper"]], "Gen3 File Class": [[1, "gen3-file-class"]], "Welcome to Gen3 SDK\u2019s documentation!": [[2, "welcome-to-gen3-sdk-s-documentation"]], "Indices and tables": [[2, "indices-and-tables"]], "Gen3 Index Class": [[3, "gen3-index-class"]], "Gen3 Jobs Class": [[4, "gen3-jobs-class"]], "Gen3 Metadata Class": [[5, "gen3-metadata-class"]], "Gen3 Object Class": [[6, "gen3-object-class"]], "Gen3 Query Class": [[7, "gen3-query-class"]], "Gen3 Submission Class": [[8, "gen3-submission-class"]], "Gen3 Tools": [[9, "gen3-tools"]], "DRS Download Tools": [[10, "module-gen3.tools.download.drs_download"]], "Indexing Tools": [[11, "indexing-tools"]], "Download": [[11, "module-gen3.tools.indexing.download_manifest"]], "Index": [[11, "module-gen3.tools.indexing.index_manifest"]], "Verify": [[11, "module-gen3.tools.indexing.verify_manifest"]], "Metadata Tools": [[12, "metadata-tools"]], "Ingest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "Gen3 Workspace Storage": [[13, "gen3-workspace-storage"]]}, "indexentries": {"gen3auth (class in gen3.auth)": [[0, "gen3.auth.Gen3Auth"]], "curl() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.curl"]], "get_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token"]], "get_access_token_from_wts() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token_from_wts"]], "refresh_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.refresh_access_token"]], "gen3file (class in gen3.file)": [[1, "gen3.file.Gen3File"]], "delete_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file"]], "delete_file_locations() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file_locations"]], "download_single() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.download_single"]], "get_presigned_url() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.get_presigned_url"]], "upload_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file"]], "upload_file_to_guid() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file_to_guid"]], "gen3index (class in gen3.index)": [[3, "gen3.index.Gen3Index"]], "async_create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_create_record"]], "async_get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_record"]], "async_get_records_from_checksum() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_from_checksum"]], "async_get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_on_page"]], "async_get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_with_params"]], "async_query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_query_urls"]], "async_update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_update_record"]], "create_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_blank"]], "create_new_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_new_version"]], "create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_record"]], "delete_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.delete_record"]], "get() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get"]], "get_all_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_all_records"]], "get_guids_prefix() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_guids_prefix"]], "get_latest_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_latest_version"]], "get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record"]], "get_record_doc() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record_doc"]], "get_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records"]], "get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records_on_page"]], "get_stats() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_stats"]], "get_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_urls"]], "get_valid_guids() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_valid_guids"]], "get_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_version"]], "get_versions() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_versions"]], "get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_with_params"]], "is_healthy() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.is_healthy"]], "query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.query_urls"]], "update_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_blank"]], "update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_record"]], "gen3jobs (class in gen3.jobs)": [[4, "gen3.jobs.Gen3Jobs"]], "async_run_job_and_wait() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.async_run_job_and_wait"]], "create_job() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.create_job"]], "get_output() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_output"]], "get_status() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_status"]], "get_version() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_version"]], "is_healthy() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.is_healthy"]], "list_jobs() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.list_jobs"]], "gen3metadata (class in gen3.metadata)": [[5, "gen3.metadata.Gen3Metadata"]], "async_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create"]], "async_create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create_aliases"]], "async_delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_alias"]], "async_delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_aliases"]], "async_get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get"]], "async_get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get_aliases"]], "async_update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update"]], "async_update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update_aliases"]], "auth_provider (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.auth_provider"]], "batch_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.batch_create"]], "create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create"]], "create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_aliases"]], "create_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_index_key_path"]], "delete() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete"]], "delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_alias"]], "delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_aliases"]], "delete_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_index_key_path"]], "endpoint (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.endpoint"]], "get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get"]], "get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_aliases"]], "get_index_key_paths() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_index_key_paths"]], "get_version() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_version"]], "is_healthy() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.is_healthy"]], "query() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.query"]], "update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update"]], "update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update_aliases"]], "gen3object (class in gen3.object)": [[6, "gen3.object.Gen3Object"]], "delete_object() (gen3.object.gen3object method)": [[6, "gen3.object.Gen3Object.delete_object"]], "gen3query (class in gen3.query)": [[7, "gen3.query.Gen3Query"]], "graphql_query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.graphql_query"]], "query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.query"]], "raw_data_download() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.raw_data_download"]], "gen3submission (class in gen3.submission)": [[8, "gen3.submission.Gen3Submission"]], "create_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_program"]], "create_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_project"]], "delete_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_node"]], "delete_nodes() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_nodes"]], "delete_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_program"]], "delete_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_project"]], "delete_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_record"]], "delete_records() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_records"]], "export_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_node"]], "export_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_record"]], "get_dictionary_all() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_all"]], "get_dictionary_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_node"]], "get_graphql_schema() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_graphql_schema"]], "get_programs() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_programs"]], "get_project_dictionary() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_dictionary"]], "get_project_manifest() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_manifest"]], "get_projects() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_projects"]], "open_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.open_project"]], "query() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.query"]], "submit_file() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_file"]], "submit_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_record"]], "gen3.tools": [[9, "module-gen3.tools"]], "module": [[9, "module-gen3.tools"], [10, "module-gen3.tools.download.drs_download"], [11, "module-gen3.tools.indexing.download_manifest"], [11, "module-gen3.tools.indexing.index_manifest"], [11, "module-gen3.tools.indexing.verify_manifest"], [12, "module-gen3.tools.metadata.ingest_manifest"]], "downloadmanager (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadManager"]], "downloadstatus (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadStatus"]], "downloadable (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Downloadable"]], "manifest (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Manifest"]], "_manager (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable._manager"]], "access_methods (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.access_methods"]], "cache_hosts_wts_tokens() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.cache_hosts_wts_tokens"]], "children (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.children"]], "commons_url (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.commons_url"]], "create_object_list() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.create_object_list"]], "created_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.created_time"]], "download() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.download"]], "download() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.download"]], "download_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.download_files_in_drs_manifest"]], "end_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.end_time"]], "file_name (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_name"]], "file_name (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_name"]], "file_size (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_size"]], "file_size (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_size"]], "gen3.tools.download.drs_download": [[10, "module-gen3.tools.download.drs_download"]], "get_fresh_token() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.get_fresh_token"]], "hostname (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.hostname"]], "list_access_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_access_in_drs_manifest"]], "list_drs_object() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_drs_object"]], "list_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_files_in_drs_manifest"]], "load() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load"]], "load_manifest() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load_manifest"]], "md5sum (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.md5sum"]], "object_id (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_id"]], "object_id (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.object_id"]], "object_type (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_type"]], "pprint() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.pprint"]], "resolve_objects() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.resolve_objects"]], "start_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.start_time"]], "status (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.status"]], "updated_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.updated_time"]], "user_access() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.user_access"]], "acls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ACLS"]], "authz (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.AUTHZ"]], "current_dir (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.CURRENT_DIR"]], "guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.GUID"]], "indexd_record_page_size (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.INDEXD_RECORD_PAGE_SIZE"]], "max_concurrent_requests (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.MAX_CONCURRENT_REQUESTS"]], "max_concurrent_requests (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.MAX_CONCURRENT_REQUESTS"]], "md5 (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.MD5"]], "prev_guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.PREV_GUID"]], "size (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.SIZE"]], "tmp_folder (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.TMP_FOLDER"]], "threadcontrol (class in gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ThreadControl"]], "urls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.URLS"]], "async_download_object_manifest() (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.async_download_object_manifest"]], "async_verify_object_manifest() (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.async_verify_object_manifest"]], "delete_all_guids() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.delete_all_guids"]], "gen3.tools.indexing.download_manifest": [[11, "module-gen3.tools.indexing.download_manifest"]], "gen3.tools.indexing.index_manifest": [[11, "module-gen3.tools.indexing.index_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, "module-gen3.tools.indexing.verify_manifest"]], "index_object_manifest() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.index_object_manifest"]], "column_to_use_as_guid (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID"]], "guid_type_for_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_INDEXED_FILE_OBJECT"]], "guid_type_for_non_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"]], "max_concurrent_requests (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.MAX_CONCURRENT_REQUESTS"]], "async_ingest_metadata_manifest() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest"]], "async_query_urls_from_indexd() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_query_urls_from_indexd"]], "gen3.tools.metadata.ingest_manifest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "gen3wsstorage (class in gen3.wss)": [[13, "gen3.wss.Gen3WsStorage"]], "copy() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.copy"]], "download() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download"]], "download_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download_url"]], "ls() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls"]], "ls_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls_path"]], "rm() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm"]], "rm_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm_path"]], "upload() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload"]], "upload_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload_url"]]}}) \ No newline at end of file diff --git a/docs/_build/html/tools/indexing.html b/docs/_build/html/tools/indexing.html index f15d537eb..ee8166867 100644 --- a/docs/_build/html/tools/indexing.html +++ b/docs/_build/html/tools/indexing.html @@ -380,7 +380,7 @@

                      Indexing Tools
                      -async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1693234093.2159688.log')[source]
                      +async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1693236046.1047835.log')[source]

                      Verify all file object records into a manifest csv

                      Parameters:
                      diff --git a/docs/_build/html/tools/metadata.html b/docs/_build/html/tools/metadata.html index d7860a28e..0e1e68c4e 100644 --- a/docs/_build/html/tools/metadata.html +++ b/docs/_build/html/tools/metadata.html @@ -101,7 +101,7 @@

                      Metadata Tools
                      -async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1693234093.5807943.log', get_guid_from_file=True, metadata_type=None)[source]
                      +async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1693236046.485695.log', get_guid_from_file=True, metadata_type=None)[source]

                      Ingest all metadata records into a manifest csv

                      Parameters:
                      From 79936758d2ad5f6aa3895d9cf56fbfc8c5db1c73 Mon Sep 17 00:00:00 2001 From: Spencer Axelrod Date: Thu, 30 Nov 2023 14:43:05 -0600 Subject: [PATCH 07/12] Revert "Apply automatic documentation changes" This reverts commit 603e9c9f10ade351389d8b245dd58b306629a34f. --- docs/_build/doctrees/environment.pickle | Bin 1553136 -> 1553141 bytes docs/_build/doctrees/tools/indexing.doctree | Bin 100101 -> 100101 bytes docs/_build/doctrees/tools/metadata.doctree | Bin 35914 -> 35919 bytes docs/_build/html/searchindex.js | 2 +- docs/_build/html/tools/indexing.html | 2 +- docs/_build/html/tools/metadata.html | 2 +- 6 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 41245f2786c17aef8c77f5eecbef9b475e34d2ae..aa7f839dff029bb4296bfbe1075882c78520de38 100644 GIT binary patch delta 11041 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 p%2?B delta 11148 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 JbLLD+{2y>S5v>3K diff --git a/docs/_build/doctrees/tools/indexing.doctree b/docs/_build/doctrees/tools/indexing.doctree index 0389db40228ef34ba9a40ccfc17cb3d4d7cc3e9b..a9ad6a6e2673eaff1495d83734e5568118a3ade3 100644 GIT binary patch delta 113 zcmZqeV{7eWYuLiL-Ad5Jz|vUH$k5c%%)&x1CqG?%^8Cf3+wWR2ny~U9%Wao+V0^-j ZA~c=XhtVBXB*BN#21R813LnN;D**E69cusp delta 113 zcmZqeV{7eWYuLiL-Ad5Rz{E_?(7?pp!q`+VCqG?%^8Cf3+wWR2ny~U9%Wao+V0^-j ZA~c=XhtVBXB*BN#21R813LnN;D*))d9W(#{ diff --git a/docs/_build/doctrees/tools/metadata.doctree b/docs/_build/doctrees/tools/metadata.doctree index 934c36823ee82f1c2e9c63844bedd509b599336a..d5851233211984a9ae25fdda66f62bef68ac8c56 100644 GIT binary patch delta 154 zcmX>#gX#PXCYA=)sV*B?mT0idWn^HOJTY8u^C=AnMjjIbOJhA#3j=dY6XVJ0`Zk*b zwT?40)^C>7b4HcioUY%>!RRsht+_d>CVdMDh_Dp0S$aA7>FQH5*kh+;i1lFV+I-8R GAQ%8>$SfKF delta 154 zcmX>iJ6{>g{hgP>Euj(o6SL5 z$C(-HHcRO_qsVQ})Nkcrbf5g*+*|-ji(XECy87gUIl>SrNpz_x8SJrBGQ@ho8jae diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 6976b4604..2cfd5f10f 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["auth", "file", "index", "indexing", "jobs", "metadata", "object", "query", "submission", "tools", "tools/drs_pull", "tools/indexing", "tools/metadata", "wss"], "filenames": ["auth.rst", "file.rst", "index.rst", "indexing.rst", "jobs.rst", "metadata.rst", "object.rst", "query.rst", "submission.rst", "tools.rst", "tools/drs_pull.rst", "tools/indexing.rst", "tools/metadata.rst", "wss.rst"], "titles": ["Gen3 Auth Helper", "Gen3 File Class", "Welcome to Gen3 SDK\u2019s documentation!", "Gen3 Index Class", "Gen3 Jobs Class", "Gen3 Metadata Class", "Gen3 Object Class", "Gen3 Query Class", "Gen3 Submission Class", "Gen3 Tools", "DRS Download Tools", "Indexing Tools", "Metadata Tools", "Gen3 Workspace Storage"], "terms": {"class": [0, 2, 10, 11, 13], "gen3auth": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "endpoint": [0, 1, 2, 3, 4, 5, 7, 8, 13], "none": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "refresh_fil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "refresh_token": 0, "idp": 0, "client_credenti": 0, "client_scop": 0, "sourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "base": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "authbas": 0, "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "request": [0, 1, 3, 5, 8, 11, 12], "implement": 0, "order": [0, 8], "support": [0, 1, 5, 8, 11], "jwt": 0, "authent": 0, "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13], "access": [0, 1, 3, 7, 10], "token": [0, 10], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "provid": [0, 1, 3, 5, 7, 8, 12], "refresh": [0, 10], "file": [0, 2, 3, 4, 8, 9, 10, 11, 12, 13], "string": [0, 3, 5, 11, 13], "automat": 0, "when": [0, 3, 7, 10, 12], "thei": [0, 10], "expir": [0, 1], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "str": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12], "opt": 0, "The": [0, 1, 2, 3, 5, 8, 10, 11], "contain": [0, 2, 5, 8, 9, 10, 11, 12], "download": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "json": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "web": 0, "option": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "work": [0, 10], "workspac": [0, 2], "default": [0, 1, 3, 7, 8, 11, 12], "env": 0, "gen3_api_kei": 0, "credenti": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "set": [0, 1, 5, 10], "includ": [0, 3], "search": [0, 2, 3], "path": [0, 1, 5, 10, 11, 13], "valu": [0, 1, 3, 5, 7, 10, 11], "doe": [0, 12], "interpret": 0, "wt": [0, 10], "an": [0, 3, 6, 8, 10, 11], "accesstoken": 0, "If": [0, 1, 7, 11, 12], "can": [0, 3, 4, 8, 11, 12], "specifi": [0, 1, 3, 11, 13], "local": [0, 13], "indic": [0, 11], "environ": 0, "fenc": [0, 1], "tupl": [0, 3, 11, 12], "client_id": 0, "client_secret": 0, "oidc": 0, "client": [0, 3], "ha": [0, 11], "grant": 0, "allow": [0, 6, 8, 10, 11, 12], "obtain": [0, 10], "space": [0, 11], "separ": [0, 11], "list": [0, 1, 3, 4, 5, 7, 8, 10, 11, 13], "scope": [0, 1], "user": [0, 10, 12], "data": [0, 1, 3, 5, 7, 8, 10, 11], "openid": 0, "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "point": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "sandbox": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "common": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "while": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "profil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "page": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13], "instal": [0, 2, 11], "crdc": 0, "some": [0, 2], "arbitrari": 0, "kei": [0, 3, 5, 13], "variabl": [0, 7, 8], "rather": 0, "than": [0, 5], "pass": [0, 7, 8, 10], "argument": [0, 13], "constructor": 0, "id": [0, 1, 3, 5, 10, 11], "secret": 0, "note": [0, 3, 11, 12], "should": [0, 8, 11], "never": 0, "hardcod": 0, "http": [0, 7, 11, 12], "datacommon": 0, "o": 0, "gen3_oidc_client_creds_secret": 0, "initi": [0, 10], "follow": [0, 11], "curl": [0, 2], "given": [0, 3, 4, 5, 8, 10, 12, 13], "ex": [0, 11, 12], "return": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "respons": [0, 1, 3, 4, 5], "under": [0, 8, 13], "index": [0, 2, 5, 9], "authz": [0, 1, 2, 3, 9, 10, 11], "map": [0, 11], "get": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 13], "post": [0, 11], "put": 0, "delet": [0, 1, 2, 3, 5, 6, 8, 10, 11], "i": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12], "els": [0, 12], "filenam": [0, 8, 10, 11, 12], "get_access_token": [0, 2], "auto": [0, 2], "within": [0, 2, 9], "5": [0, 5], "minut": 0, "get_access_token_from_wt": [0, 2], "try": 0, "fetch": 0, "namespac": [0, 12], "refresh_access_token": [0, 2], "new": [0, 3], "gen3fil": [1, 2], "auth_provid": [1, 2, 3, 4, 5, 6, 7, 8, 13], "object": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13], "For": [1, 5, 6, 7, 8, 9, 11], "interact": [1, 3, 4, 5, 6, 8, 13], "manag": [1, 5, 10], "featur": [1, 6], "A": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "servic": [1, 3, 4, 5, 6, 8, 11, 12, 13], "presign": 1, "url": [1, 2, 3, 9, 10, 11, 12, 13], "right": 1, "now": [1, 8], "instanc": [1, 3, 6, 7, 8, 9, 10], "auth": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "delete_fil": [1, 2], "guid": [1, 2, 3, 5, 6, 9, 11, 12], "method": [1, 7, 10], "deprec": 1, "delete_file_loc": [1, 2, 6], "instead": [1, 7, 11], "all": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12], "locat": [1, 6], "store": [1, 3, 10], "remov": [1, 6, 11, 13], "its": [1, 3], "record": [1, 3, 5, 7, 8, 11, 12], "indexd": [1, 3, 6, 10, 11, 12], "uuid": [1, 3, 8], "text": [1, 7, 8], "result": [1, 8, 10, 11], "type": [1, 3, 4, 5, 7, 8, 10, 11, 12], "download_singl": [1, 2], "object_id": [1, 2, 9, 10], "singl": [1, 5, 8], "": [1, 4, 8, 10, 11], "uniqu": [1, 5], "get_presigned_url": [1, 2], "protocol": 1, "retriev": [1, 8, 10, 12], "give": 1, "limit": [1, 3, 5, 12], "time": [1, 8, 10, 11], "pick": 1, "avail": [1, 2, 10, 11], "queri": [1, 2, 3, 5, 8, 11, 12], "upload_fil": [1, 2], "file_nam": [1, 2, 3, 9, 10, 11], "expires_in": 1, "bucket": [1, 6], "upload": [1, 2, 3, 8, 13], "author": 1, "storag": [1, 2, 6], "s3": [1, 10, 11], "az": 1, "isn": 1, "t": [1, 5, 11], "int": [1, 3, 5, 7, 8, 10, 11, 12], "amount": [1, 9], "second": [1, 4], "sign": 1, "datetim": [1, 10], "utcnow": 1, "Be": 1, "sure": 1, "posit": [1, 7], "integ": [1, 3, 8], "also": 1, "treat": [1, 5], "max_presigned_url_ttl": 1, "configur": 1, "must": [1, 5], "allowed_data_upload_bucket": 1, "data_upload_bucket": 1, "represent": [1, 3], "document": [1, 3], "upload_file_to_guid": [1, 2], "exist": [1, 3, 5, 6, 9, 12], "readm": 2, "python": [2, 9, 11], "github": [2, 7], "repo": 2, "setup": 2, "inform": [2, 3, 10], "along": 2, "quickstart": 2, "script": 2, "more": [2, 5, 7, 9, 10], "detail": [2, 7, 10], "about": [2, 3], "variou": 2, "function": [2, 3, 4, 5, 9, 10, 11, 12], "mostli": 2, "docstr": 2, "code": [2, 8], "helper": 2, "gen3index": [2, 3], "async_create_record": [2, 3], "async_get_record": [2, 3], "async_get_records_from_checksum": [2, 3], "async_get_records_on_pag": [2, 3], "async_get_with_param": [2, 3], "async_query_url": [2, 3], "async_update_record": [2, 3], "create_blank": [2, 3], "create_new_vers": [2, 3], "create_record": [2, 3], "delete_record": [2, 3, 8], "get_all_record": [2, 3], "get_guids_prefix": [2, 3], "get_latest_vers": [2, 3], "get_record": [2, 3], "get_record_doc": [2, 3], "get_records_on_pag": [2, 3], "get_stat": [2, 3], "get_url": [2, 3], "get_valid_guid": [2, 3], "get_vers": [2, 3, 4, 5], "get_with_param": [2, 3], "is_healthi": [2, 3, 4, 5], "query_url": [2, 3], "update_blank": [2, 3], "update_record": [2, 3], "job": 2, "gen3job": [2, 4, 10], "async_run_job_and_wait": [2, 4], "create_job": [2, 4], "get_output": [2, 4], "get_statu": [2, 4], "list_job": [2, 4], "metadata": [2, 3, 6, 9, 11], "gen3metadata": [2, 5], "async_cr": [2, 5], "async_create_alias": [2, 5], "async_delete_alia": [2, 5], "async_delete_alias": [2, 5], "async_get": [2, 5], "async_get_alias": [2, 5], "async_upd": [2, 5], "async_update_alias": [2, 5], "batch_creat": [2, 5], "creat": [2, 3, 4, 5, 6, 8, 10, 11], "create_alias": [2, 5], "create_index_key_path": [2, 5], "delete_alia": [2, 5], "delete_alias": [2, 5], "delete_index_key_path": [2, 5], "get_alias": [2, 5], "get_index_key_path": [2, 5], "updat": [2, 3, 5, 10, 11], "update_alias": [2, 5], "gen3object": [2, 6], "delete_object": [2, 6], "gen3queri": [2, 7], "graphql_queri": [2, 7], "raw_data_download": [2, 7], "submiss": 2, "gen3submiss": [2, 8], "create_program": [2, 8], "create_project": [2, 8], "delete_nod": [2, 8], "delete_program": [2, 8], "delete_project": [2, 8], "export_nod": [2, 8], "export_record": [2, 8], "get_dictionary_al": [2, 8], "get_dictionary_nod": [2, 8], "get_graphql_schema": [2, 8], "get_program": [2, 8], "get_project_dictionari": [2, 8], "get_project_manifest": [2, 8], "get_project": [2, 8], "open_project": [2, 8], "submit_fil": [2, 8], "submit_record": [2, 8], "tool": 2, "dr": [2, 9], "downloadmanag": [2, 9, 10], "cache_hosts_wts_token": [2, 9, 10], "get_fresh_token": [2, 9, 10], "resolve_object": [2, 9, 10], "user_access": [2, 9, 10], "downloadstatu": [2, 9, 10], "statu": [2, 4, 9, 10], "start_tim": [2, 9, 10], "end_tim": [2, 9, 10], "object_typ": [2, 9, 10], "hostnam": [2, 9, 10], "file_s": [2, 9, 10, 11], "updated_tim": [2, 9, 10], "created_tim": [2, 9, 10], "access_method": [2, 9, 10], "children": [2, 9, 10], "_manag": [2, 9, 10], "pprint": [2, 9, 10], "manifest": [2, 8, 9, 10, 11, 12], "md5sum": [2, 9, 10], "commons_url": [2, 9, 10, 11, 12], "create_object_list": [2, 9, 10], "load": [2, 9, 10], "load_manifest": [2, 9, 10], "download_drs_object": [], "download_files_in_drs_manifest": [2, 9, 10], "list_access_in_drs_manifest": [2, 9, 10], "list_drs_object": [2, 9, 10], "list_files_in_drs_manifest": [2, 9, 10], "current_dir": [2, 9, 11], "indexd_record_page_s": [2, 9, 11], "max_concurrent_request": [2, 9, 11, 12], "tmp_folder": [2, 9, 11], "async_download_object_manifest": [2, 9, 11], "size": [2, 3, 9, 10, 11], "md5": [2, 3, 9, 11], "acl": [2, 3, 9, 11], "prev_guid": [2, 9, 11], "threadcontrol": [2, 9, 11], "delete_all_guid": [2, 9, 11], "index_object_manifest": [2, 9, 11], "verifi": [2, 9], "async_verify_object_manifest": [2, 9, 11], "ingest": [2, 9], "column_to_use_as_guid": [2, 9, 12], "guid_type_for_indexed_file_object": [2, 9, 12], "guid_type_for_non_indexed_file_object": [2, 9, 12], "async_ingest_metadata_manifest": [2, 9, 12], "async_query_urls_from_indexd": [2, 9, 12], "gen3wsstorag": [2, 13], "copi": [2, 13], "download_url": [2, 13], "l": [2, 13], "ls_path": [2, 13], "rm": [2, 13], "rm_path": [2, 13], "upload_url": [2, 13], "modul": [2, 10, 11], "service_loc": [3, 4, 5], "public": [3, 5], "read": [3, 5, 11], "onli": [3, 5, 7, 8, 10, 11], "necessari": [3, 5], "basic": [3, 11, 12], "cred": 3, "async": [3, 4, 5, 9, 11, 12], "hash": [3, 11], "did": 3, "baseid": 3, "urls_metadata": 3, "version": [3, 4, 5], "_ssl": [3, 4, 5], "asynchron": [3, 4, 5], "dict": [3, 4, 5, 10, 11, 12], "eg": 3, "ab167e49d25b488939b1ede42752458b": 3, "associ": [3, 5], "made": 3, "where": [3, 5, 11, 12], "you": [3, 8, 11], "control": 3, "rbac": 3, "name": [3, 4, 8, 10, 11, 12, 13], "addit": [3, 5, 10, 11], "entri": [3, 11], "attach": [3, 5], "each": [3, 8, 10, 11], "group": 3, "previou": [3, 11], "checksum": [3, 10], "checksum_typ": 3, "match": [3, 5, 12], "param": [3, 5, 8, 10], "correspond": 3, "suppli": 3, "need": [3, 7, 10, 11], "handl": [3, 10], "hash_typ": 3, "whether": [3, 4, 5, 8, 11, 12], "ssl": [3, 4, 5], "pattern": [3, 12], "against": [3, 7, 8, 11, 12], "kwarg": [3, 4, 5], "bodi": 3, "dictionari": [3, 4, 5, 7, 8], "format": [3, 5, 8, 11], "blank": 3, "add": [3, 5], "sinc": 3, "content": [3, 13], "immut": 3, "want": [3, 8], "chang": [3, 11], "That": 3, "field": [3, 5, 7, 11, 12], "old": 3, "ad": 3, "least": 3, "one": [3, 5, 10, 11], "suffici": 3, "good": 3, "idea": 3, "number": [3, 7, 8, 11, 12], "noth": [3, 6], "dist_resolut": 3, "true": [3, 4, 5, 6, 7, 8, 10, 11, 12], "alia": [3, 5], "distribut": 3, "identifi": [3, 5, 9, 11], "boolean": 3, "we": [3, 11], "pagin": 3, "fals": [3, 5, 6, 10, 11], "start": [3, 4, 7, 8, 10], "prefix": 3, "rtype": 3, "has_vers": 3, "latest": 3, "exclud": 3, "without": [3, 5], "repres": [3, 5, 10], "info": [3, 11], "algorithm": 3, "count": 3, "valid": [3, 7], "file_st": 3, "like": [3, 5, 9, 11, 12], "signpost": 3, "healthi": [3, 4, 5], "rev": 3, "revis": 3, "simpl": 3, "consist": 3, "mechan": 3, "dispatch": 4, "job_nam": 4, "job_input": 4, "wait": 4, "output": [4, 5, 11, 12], "Will": [4, 7, 10], "sleep": 4, "linear": 4, "delai": 4, "until": [4, 10], "done": 4, "1": [4, 5, 8, 10, 11], "global": [4, 5], "input": [4, 10, 11], "job_id": 4, "previous": 4, "complet": [4, 11], "bool": [4, 5, 8, 10, 11, 12], "md": [5, 7, 10, 12], "admin_endpoint_suffix": 5, "admin": [5, 11], "alias": 5, "overwrit": 5, "what": 5, "end": [5, 10], "up": [5, 9], "blob": [5, 7], "asyncron": 5, "altern": [5, 11], "merg": 5, "AND": 5, "descript": 5, "metadata_list": 5, "specif": [5, 8, 11, 12], "expect": [5, 9, 11], "anoth": 5, "databas": 5, "return_full_metadata": 5, "10": [5, 7, 11], "offset": [5, 7], "0": [5, 7, 8, 11], "use_agg_md": 5, "off": 5, "logic": [5, 12], "filter": [5, 7], "b": [5, 11], "2": [5, 11], "have": [5, 11], "ar": [5, 7, 8, 9, 10, 11], "alwai": 5, "nest": 5, "c": [5, 11], "3": [5, 11], "same": [5, 11, 13], "whose": 5, "ani": [5, 10, 11], "But": 5, "differ": 5, "33": 5, "d": 5, "4": [5, 11], "e": [5, 10], "won": 5, "333": 5, "defin": [5, 8, 10], "api": [5, 8, 11], "just": [5, 11, 12], "max": 5, "num": 5, "OR": 5, "level": 6, "current": [6, 8, 10], "system": [6, 7, 8, 9], "elasticsearch": 7, "query_str": 7, "execut": [7, 8, 11], "graphql": [7, 8], "query_txt": [7, 8], "syntax": 7, "see": [7, 10, 11], "com": 7, "uc": 7, "cdi": 7, "guppi": 7, "master": 7, "doc": [7, 10], "data_typ": 7, "my_index": 7, "my_field": 7, "first": [7, 8], "filter_object": 7, "sort_object": 7, "verbos": [7, 8], "row": [7, 8, 11, 12], "sort": 7, "equal": 7, "respect": 7, "complex": 7, "appli": 7, "One": 7, "unaccess": 7, "regular": 7, "tier": 7, "mode": 7, "subject": [7, 8], "50": 7, "vital_statu": 7, "submitter_id": 7, "aliv": 7, "asc": 7, "sort_field": 7, "raw": [7, 11], "project_id": [7, 8], "my_program": 7, "my_project": 7, "submit": [8, 11], "export": [8, 10], "sheepdog": 8, "through": [8, 11], "peregrin": 8, "sub": 8, "program": [8, 11], "project": [8, 11], "dcf": 8, "node_nam": 8, "batch_siz": 8, "100": [8, 11], "node": 8, "how": [8, 11], "mani": [8, 11], "print": [8, 10], "progress": [8, 10], "log": [8, 10, 11, 12], "ccle": 8, "demograph": 8, "ordered_node_list": 8, "revers": 8, "graph": 8, "experi": 8, "empti": [8, 11], "uuid1": 8, "uuid2": 8, "node_typ": 8, "fileformat": 8, "which": [8, 10], "belong": 8, "either": 8, "tsv": [8, 11, 12], "screen": 8, "sampl": [8, 10], "ccle_sample_nod": 8, "d70b41b9": 8, "6f90": 8, "4714": 8, "8420": 8, "e043ab8b77b9": 8, "ccle_one_record": 8, "entir": 8, "schema": 8, "run": [8, 11], "introspect": 8, "regist": 8, "mark": 8, "open": [8, 10, 11], "mean": 8, "etc": 8, "max_tri": 8, "retri": 8, "fail": [8, 10], "chunk_siz": 8, "30": 8, "row_offset": 8, "spreadsheet": 8, "multipl": [8, 11], "csv": [8, 11, 12], "xlsx": 8, "worksheet": 8, "skip": 8, "data_spreadsheet": 8, "arrai": 8, "action": [9, 11], "These": 9, "broken": 9, "broad": 9, "categori": 9, "task": 9, "relat": 9, "persist": 9, "Such": 9, "mai": [9, 11], "involv": 9, "assign": 9, "everi": [9, 11], "alreadi": 9, "larg": 9, "most": 9, "util": 9, "capabl": 9, "make": [9, 11], "effici": 9, "main": 10, "datafil": 10, "manifest_1": 10, "my_common": 10, "org": 10, "gen3": [10, 11, 12], "my_credenti": 10, "howto": 10, "drsdownload": 10, "drs_download": 10, "download_list": 10, "show_progress": 10, "assist": 10, "minimum": 10, "interest": 10, "object_list": 10, "host": 10, "It": 10, "possibl": 10, "save_directori": 10, "unpack_packag": 10, "delete_unpacked_packag": 10, "directori": [10, 11], "call": [10, 13], "case": 10, "error": [10, 11, 12], "continu": 10, "save": 10, "show": 10, "bar": 10, "disabl": 10, "unpack": 10, "packag": 10, "after": 10, "them": [10, 11], "drs_hostnam": 10, "known": 10, "otherwis": 10, "success": 10, "resolv": 10, "permiss": 10, "wai": 10, "determin": [10, 11, 12], "reason": 10, "pend": 10, "objectid": 10, "datamanag": 10, "occur": 10, "attribut": [10, 11], "drsobjecttyp": 10, "unknown": 10, "factori": 10, "popul": [10, 12], "server": 10, "requir": 10, "byte": 10, "timestamp": 10, "last": 10, "g": 10, "child": 10, "bundl": 10, "self": 10, "indent": 10, "pretti": 10, "In": 10, "similar": 10, "linux": 10, "tree": 10, "command": [10, 11], "typic": 10, "discoveri": 10, "cach": 10, "files": 10, "static": 10, "bownload": 10, "successfulli": 10, "pars": [10, 11, 12, 13], "output_dir": 10, "conveni": 10, "infil": 10, "wrapper": 10, "cli": 10, "process": 11, "coroutin": 11, "asyncio": [11, 12], "librari": 11, "comma": 11, "header": 11, "download_manifest": 11, "per": [11, 12], "maximum": [11, 12], "desir": 11, "concurr": [11, 12], "across": 11, "thread": 11, "folder": 11, "place": 11, "temporari": 11, "write": 11, "safe": 11, "so": 11, "To": 11, "workaround": 11, "concat": 11, "output_filenam": [11, 12], "num_process": 11, "24": [11, 12], "input_manifest": 11, "python_subprocess_command": 11, "root": [11, 12], "domain": [11, 12], "live": [11, 12], "parallel": 11, "hit": 11, "total": 11, "help": 11, "everyth": 11, "attempt": 11, "By": 11, "someth": 11, "maco": 11, "x": 11, "python3": 11, "tab": 11, "session": 11, "column": [11, 12], "shown": 11, "below": 11, "255e396f": 11, "f1f8": 11, "11e9": 11, "9a07": 11, "0a80fada099c": 11, "473d83400bc1bc9dc635e334faddf33c": 11, "363455714": 11, "pdcdatastor": 11, "test1": 11, "0a80fada098c": 11, "473d83400bc1bc9dc635e334faddd33c": 11, "343434344": 11, "test2": 11, "0a80fada097c": 11, "473d83400bc1bc9dc635e334fadd433c": 11, "543434443": 11, "phs0001": 11, "phs0002": 11, "test3": 11, "0a80fada096c": 11, "test4": 11, "0a80fada010c": 11, "473d83400bc1bc9dc635e334fadde33c": 11, "test5": 11, "index_manifest": 11, "usag": 11, "py": 11, "giangb": 11, "planx": 11, "pla": 11, "net": 11, "manifest_fil": [11, 12], "path_to_manifest": 11, "replace_url": 11, "thread_num": 11, "api_kei": 11, "processed_fil": 11, "num_total_fil": 11, "synchron": 11, "warn": 11, "IF": 11, "know": 11, "THE": 11, "implic": 11, "manifest_file_delimit": [11, 12], "submit_additional_metadata_column": 11, "force_metadata_columns_even_if_empti": 11, "loop": 11, "password": [11, 12], "flag": 11, "replac": 11, "delimit": 11, "forc": 11, "creation": 11, "even": 11, "enabl": 11, "illustr": 11, "columna": 11, "columnb": 11, "columnc": 11, "dataa": 11, "datab": 11, "guid_exampl": 11, "md5_hash": 11, "fieldnam": 11, "There": 11, "those": 11, "abov": 11, "overrid": [11, 12], "assum": 11, "behavior": 11, "simpli": 11, "manifest_row_pars": [11, 12], "custom": 11, "import": 11, "verify_manifest": 11, "def": 11, "_get_authz_from_row": 11, "strip": 11, "parser": [11, 12], "verify_object_manifest": 11, "verif": 11, "error_nam": 11, "value_from_manifest": 11, "actual": 11, "value_from_indexd": 11, "93d9af72": 11, "b0f1": 11, "450c": 11, "a5c6": 11, "7d3d8d2083b4": 11, "dev": 11, "test": 11, "_get_acl_from_row": 11, "_get_file_name_from_row": 11, "_get_file_size_from_row": 11, "_get_guid_from_row": 11, "_get_md5_from_row": 11, "_get_urls_from_row": 11, "1692675811": [], "9771066": [], "indexd_field": [11, 12], "func_to_parse_row": [11, 12], "delimet": [11, 12], "metdata": 12, "ingest_manifest": 12, "NOT": 12, "guid_from_fil": 12, "_get_guid_for_row": 12, "indexed_file_object_guid": 12, "_query_for_associated_indexd_record_guid": 12, "guid_for_row": 12, "elsewher": 12, "metadata_sourc": 12, "1692675812": [], "3144128": [], "get_guid_from_fil": 12, "metadata_typ": 12, "dbgap": 12, "usual": 12, "fill": 12, "_guid_typ": 12, "is_indexed_file_object": 12, "lock": 12, "semaphor": 12, "semaphon": 12, "ammount": 12, "connect": 12, "wss": 13, "src_urlstr": 13, "dest_urlstr": 13, "appropri": 13, "src_w": 13, "src_wskei": 13, "dest_path": 13, "disk": 13, "w": 13, "wskei": 13, "ws_urlstr": 13, "form": 13, "src_path": 13, "dest_w": 13, "dest_wskei": 13, "1692676927": [], "2291234": [], "6143494": [], "1692716275": [], "1734753": [], "577429": [], "1692716527": [], "4222114": [], "9511294": [], "1692717039": [], "3338752": [], "744264": [], "1692741377": [], "0982177": [], "4559627": [], "1692743380": [], "4060478": [], "7860734": [], "1692743691": [], "983341": [], "1692743692": [], "4543839": [], "1692825679": [], "249731": [], "5510318": [], "1692886743": [], "381985": [], "8074749": [], "1693233058": [], "3038826": [], "6020522": [], "1693234093": [], "2159688": [], "5807943": [], "1693236046": [11, 12], "1047835": 11, "485695": 12}, "objects": {"gen3.auth": [[0, 0, 1, "", "Gen3Auth"]], "gen3.auth.Gen3Auth": [[0, 1, 1, "", "curl"], [0, 1, 1, "", "get_access_token"], [0, 1, 1, "", "get_access_token_from_wts"], [0, 1, 1, "", "refresh_access_token"]], "gen3.file": [[1, 0, 1, "", "Gen3File"]], "gen3.file.Gen3File": [[1, 1, 1, "", "delete_file"], [1, 1, 1, "", "delete_file_locations"], [1, 1, 1, "", "download_single"], [1, 1, 1, "", "get_presigned_url"], [1, 1, 1, "", "upload_file"], [1, 1, 1, "", "upload_file_to_guid"]], "gen3.index": [[3, 0, 1, "", "Gen3Index"]], "gen3.index.Gen3Index": [[3, 1, 1, "", "async_create_record"], [3, 1, 1, "", "async_get_record"], [3, 1, 1, "", "async_get_records_from_checksum"], [3, 1, 1, "", "async_get_records_on_page"], [3, 1, 1, "", "async_get_with_params"], [3, 1, 1, "", "async_query_urls"], [3, 1, 1, "", "async_update_record"], [3, 1, 1, "", "create_blank"], [3, 1, 1, "", "create_new_version"], [3, 1, 1, "", "create_record"], [3, 1, 1, "", "delete_record"], [3, 1, 1, "", "get"], [3, 1, 1, "", "get_all_records"], [3, 1, 1, "", "get_guids_prefix"], [3, 1, 1, "", "get_latest_version"], [3, 1, 1, "", "get_record"], [3, 1, 1, "", "get_record_doc"], [3, 1, 1, "", "get_records"], [3, 1, 1, "", "get_records_on_page"], [3, 1, 1, "", "get_stats"], [3, 1, 1, "", "get_urls"], [3, 1, 1, "", "get_valid_guids"], [3, 1, 1, "", "get_version"], [3, 1, 1, "", "get_versions"], [3, 1, 1, "", "get_with_params"], [3, 1, 1, "", "is_healthy"], [3, 1, 1, "", "query_urls"], [3, 1, 1, "", "update_blank"], [3, 1, 1, "", "update_record"]], "gen3.jobs": [[4, 0, 1, "", "Gen3Jobs"]], "gen3.jobs.Gen3Jobs": [[4, 1, 1, "", "async_run_job_and_wait"], [4, 1, 1, "", "create_job"], [4, 1, 1, "", "get_output"], [4, 1, 1, "", "get_status"], [4, 1, 1, "", "get_version"], [4, 1, 1, "", "is_healthy"], [4, 1, 1, "", "list_jobs"]], "gen3.metadata": [[5, 0, 1, "", "Gen3Metadata"]], "gen3.metadata.Gen3Metadata": [[5, 1, 1, "", "async_create"], [5, 1, 1, "", "async_create_aliases"], [5, 1, 1, "", "async_delete_alias"], [5, 1, 1, "", "async_delete_aliases"], [5, 1, 1, "", "async_get"], [5, 1, 1, "", "async_get_aliases"], [5, 1, 1, "", "async_update"], [5, 1, 1, "", "async_update_aliases"], [5, 2, 1, "", "auth_provider"], [5, 1, 1, "", "batch_create"], [5, 1, 1, "", "create"], [5, 1, 1, "", "create_aliases"], [5, 1, 1, "", "create_index_key_path"], [5, 1, 1, "", "delete"], [5, 1, 1, "", "delete_alias"], [5, 1, 1, "", "delete_aliases"], [5, 1, 1, "", "delete_index_key_path"], [5, 2, 1, "", "endpoint"], [5, 1, 1, "", "get"], [5, 1, 1, "", "get_aliases"], [5, 1, 1, "", "get_index_key_paths"], [5, 1, 1, "", "get_version"], [5, 1, 1, "", "is_healthy"], [5, 1, 1, "", "query"], [5, 1, 1, "", "update"], [5, 1, 1, "", "update_aliases"]], "gen3.object": [[6, 0, 1, "", "Gen3Object"]], "gen3.object.Gen3Object": [[6, 1, 1, "", "delete_object"]], "gen3.query": [[7, 0, 1, "", "Gen3Query"]], "gen3.query.Gen3Query": [[7, 1, 1, "", "graphql_query"], [7, 1, 1, "", "query"], [7, 1, 1, "", "raw_data_download"]], "gen3.submission": [[8, 0, 1, "", "Gen3Submission"]], "gen3.submission.Gen3Submission": [[8, 1, 1, "", "create_program"], [8, 1, 1, "", "create_project"], [8, 1, 1, "", "delete_node"], [8, 1, 1, "", "delete_nodes"], [8, 1, 1, "", "delete_program"], [8, 1, 1, "", "delete_project"], [8, 1, 1, "", "delete_record"], [8, 1, 1, "", "delete_records"], [8, 1, 1, "", "export_node"], [8, 1, 1, "", "export_record"], [8, 1, 1, "", "get_dictionary_all"], [8, 1, 1, "", "get_dictionary_node"], [8, 1, 1, "", "get_graphql_schema"], [8, 1, 1, "", "get_programs"], [8, 1, 1, "", "get_project_dictionary"], [8, 1, 1, "", "get_project_manifest"], [8, 1, 1, "", "get_projects"], [8, 1, 1, "", "open_project"], [8, 1, 1, "", "query"], [8, 1, 1, "", "submit_file"], [8, 1, 1, "", "submit_record"]], "gen3": [[9, 3, 0, "-", "tools"]], "gen3.tools.download": [[10, 3, 0, "-", "drs_download"]], "gen3.tools.download.drs_download": [[10, 0, 1, "", "DownloadManager"], [10, 0, 1, "", "DownloadStatus"], [10, 0, 1, "", "Downloadable"], [10, 0, 1, "", "Manifest"], [10, 4, 1, "", "download_files_in_drs_manifest"], [10, 4, 1, "", "list_access_in_drs_manifest"], [10, 4, 1, "", "list_drs_object"], [10, 4, 1, "", "list_files_in_drs_manifest"]], "gen3.tools.download.drs_download.DownloadManager": [[10, 1, 1, "", "cache_hosts_wts_tokens"], [10, 1, 1, "", "download"], [10, 1, 1, "", "get_fresh_token"], [10, 1, 1, "", "resolve_objects"], [10, 1, 1, "", "user_access"]], "gen3.tools.download.drs_download.DownloadStatus": [[10, 2, 1, "", "end_time"], [10, 2, 1, "", "start_time"], [10, 2, 1, "", "status"]], "gen3.tools.download.drs_download.Downloadable": [[10, 2, 1, "", "_manager"], [10, 2, 1, "", "access_methods"], [10, 2, 1, "", "children"], [10, 2, 1, "", "created_time"], [10, 1, 1, "", "download"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 2, 1, "", "hostname"], [10, 2, 1, "", "object_id"], [10, 2, 1, "", "object_type"], [10, 1, 1, "", "pprint"], [10, 2, 1, "", "updated_time"]], "gen3.tools.download.drs_download.Manifest": [[10, 2, 1, "", "commons_url"], [10, 1, 1, "", "create_object_list"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 1, 1, "", "load"], [10, 1, 1, "", "load_manifest"], [10, 2, 1, "", "md5sum"], [10, 2, 1, "", "object_id"]], "gen3.tools.indexing": [[11, 3, 0, "-", "download_manifest"], [11, 3, 0, "-", "index_manifest"], [11, 3, 0, "-", "verify_manifest"]], "gen3.tools.indexing.download_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "INDEXD_RECORD_PAGE_SIZE"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 2, 1, "", "TMP_FOLDER"], [11, 4, 1, "", "async_download_object_manifest"]], "gen3.tools.indexing.index_manifest": [[11, 2, 1, "", "ACLS"], [11, 2, 1, "", "AUTHZ"], [11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "GUID"], [11, 2, 1, "", "MD5"], [11, 2, 1, "", "PREV_GUID"], [11, 2, 1, "", "SIZE"], [11, 0, 1, "", "ThreadControl"], [11, 2, 1, "", "URLS"], [11, 4, 1, "", "delete_all_guids"], [11, 4, 1, "", "index_object_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 4, 1, "", "async_verify_object_manifest"]], "gen3.tools.metadata": [[12, 3, 0, "-", "ingest_manifest"]], "gen3.tools.metadata.ingest_manifest": [[12, 2, 1, "", "COLUMN_TO_USE_AS_GUID"], [12, 2, 1, "", "GUID_TYPE_FOR_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [12, 4, 1, "", "async_ingest_metadata_manifest"], [12, 4, 1, "", "async_query_urls_from_indexd"]], "gen3.wss": [[13, 0, 1, "", "Gen3WsStorage"]], "gen3.wss.Gen3WsStorage": [[13, 1, 1, "", "copy"], [13, 1, 1, "", "download"], [13, 1, 1, "", "download_url"], [13, 1, 1, "", "ls"], [13, 1, 1, "", "ls_path"], [13, 1, 1, "", "rm"], [13, 1, 1, "", "rm_path"], [13, 1, 1, "", "upload"], [13, 1, 1, "", "upload_url"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:module", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "auth": 0, "helper": 0, "file": 1, "class": [1, 3, 4, 5, 6, 7, 8], "welcom": 2, "sdk": 2, "": 2, "document": 2, "indic": 2, "tabl": 2, "index": [3, 11], "job": 4, "metadata": [5, 12], "object": 6, "queri": 7, "submiss": 8, "tool": [9, 10, 11, 12], "dr": 10, "download": [10, 11], "verifi": 11, "ingest": 12, "workspac": 13, "storag": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Gen3 Auth Helper": [[0, "gen3-auth-helper"]], "Gen3 File Class": [[1, "gen3-file-class"]], "Welcome to Gen3 SDK\u2019s documentation!": [[2, "welcome-to-gen3-sdk-s-documentation"]], "Indices and tables": [[2, "indices-and-tables"]], "Gen3 Index Class": [[3, "gen3-index-class"]], "Gen3 Jobs Class": [[4, "gen3-jobs-class"]], "Gen3 Metadata Class": [[5, "gen3-metadata-class"]], "Gen3 Object Class": [[6, "gen3-object-class"]], "Gen3 Query Class": [[7, "gen3-query-class"]], "Gen3 Submission Class": [[8, "gen3-submission-class"]], "Gen3 Tools": [[9, "gen3-tools"]], "DRS Download Tools": [[10, "module-gen3.tools.download.drs_download"]], "Indexing Tools": [[11, "indexing-tools"]], "Download": [[11, "module-gen3.tools.indexing.download_manifest"]], "Index": [[11, "module-gen3.tools.indexing.index_manifest"]], "Verify": [[11, "module-gen3.tools.indexing.verify_manifest"]], "Metadata Tools": [[12, "metadata-tools"]], "Ingest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "Gen3 Workspace Storage": [[13, "gen3-workspace-storage"]]}, "indexentries": {"gen3auth (class in gen3.auth)": [[0, "gen3.auth.Gen3Auth"]], "curl() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.curl"]], "get_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token"]], "get_access_token_from_wts() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token_from_wts"]], "refresh_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.refresh_access_token"]], "gen3file (class in gen3.file)": [[1, "gen3.file.Gen3File"]], "delete_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file"]], "delete_file_locations() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file_locations"]], "download_single() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.download_single"]], "get_presigned_url() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.get_presigned_url"]], "upload_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file"]], "upload_file_to_guid() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file_to_guid"]], "gen3index (class in gen3.index)": [[3, "gen3.index.Gen3Index"]], "async_create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_create_record"]], "async_get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_record"]], "async_get_records_from_checksum() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_from_checksum"]], "async_get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_on_page"]], "async_get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_with_params"]], "async_query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_query_urls"]], "async_update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_update_record"]], "create_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_blank"]], "create_new_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_new_version"]], "create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_record"]], "delete_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.delete_record"]], "get() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get"]], "get_all_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_all_records"]], "get_guids_prefix() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_guids_prefix"]], "get_latest_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_latest_version"]], "get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record"]], "get_record_doc() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record_doc"]], "get_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records"]], "get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records_on_page"]], "get_stats() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_stats"]], "get_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_urls"]], "get_valid_guids() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_valid_guids"]], "get_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_version"]], "get_versions() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_versions"]], "get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_with_params"]], "is_healthy() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.is_healthy"]], "query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.query_urls"]], "update_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_blank"]], "update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_record"]], "gen3jobs (class in gen3.jobs)": [[4, "gen3.jobs.Gen3Jobs"]], "async_run_job_and_wait() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.async_run_job_and_wait"]], "create_job() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.create_job"]], "get_output() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_output"]], "get_status() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_status"]], "get_version() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_version"]], "is_healthy() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.is_healthy"]], "list_jobs() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.list_jobs"]], "gen3metadata (class in gen3.metadata)": [[5, "gen3.metadata.Gen3Metadata"]], "async_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create"]], "async_create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create_aliases"]], "async_delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_alias"]], "async_delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_aliases"]], "async_get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get"]], "async_get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get_aliases"]], "async_update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update"]], "async_update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update_aliases"]], "auth_provider (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.auth_provider"]], "batch_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.batch_create"]], "create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create"]], "create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_aliases"]], "create_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_index_key_path"]], "delete() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete"]], "delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_alias"]], "delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_aliases"]], "delete_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_index_key_path"]], "endpoint (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.endpoint"]], "get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get"]], "get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_aliases"]], "get_index_key_paths() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_index_key_paths"]], "get_version() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_version"]], "is_healthy() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.is_healthy"]], "query() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.query"]], "update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update"]], "update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update_aliases"]], "gen3object (class in gen3.object)": [[6, "gen3.object.Gen3Object"]], "delete_object() (gen3.object.gen3object method)": [[6, "gen3.object.Gen3Object.delete_object"]], "gen3query (class in gen3.query)": [[7, "gen3.query.Gen3Query"]], "graphql_query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.graphql_query"]], "query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.query"]], "raw_data_download() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.raw_data_download"]], "gen3submission (class in gen3.submission)": [[8, "gen3.submission.Gen3Submission"]], "create_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_program"]], "create_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_project"]], "delete_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_node"]], "delete_nodes() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_nodes"]], "delete_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_program"]], "delete_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_project"]], "delete_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_record"]], "delete_records() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_records"]], "export_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_node"]], "export_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_record"]], "get_dictionary_all() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_all"]], "get_dictionary_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_node"]], "get_graphql_schema() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_graphql_schema"]], "get_programs() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_programs"]], "get_project_dictionary() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_dictionary"]], "get_project_manifest() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_manifest"]], "get_projects() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_projects"]], "open_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.open_project"]], "query() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.query"]], "submit_file() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_file"]], "submit_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_record"]], "gen3.tools": [[9, "module-gen3.tools"]], "module": [[9, "module-gen3.tools"], [10, "module-gen3.tools.download.drs_download"], [11, "module-gen3.tools.indexing.download_manifest"], [11, "module-gen3.tools.indexing.index_manifest"], [11, "module-gen3.tools.indexing.verify_manifest"], [12, "module-gen3.tools.metadata.ingest_manifest"]], "downloadmanager (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadManager"]], "downloadstatus (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadStatus"]], "downloadable (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Downloadable"]], "manifest (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Manifest"]], "_manager (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable._manager"]], "access_methods (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.access_methods"]], "cache_hosts_wts_tokens() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.cache_hosts_wts_tokens"]], "children (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.children"]], "commons_url (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.commons_url"]], "create_object_list() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.create_object_list"]], "created_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.created_time"]], "download() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.download"]], "download() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.download"]], "download_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.download_files_in_drs_manifest"]], "end_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.end_time"]], "file_name (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_name"]], "file_name (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_name"]], "file_size (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_size"]], "file_size (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_size"]], "gen3.tools.download.drs_download": [[10, "module-gen3.tools.download.drs_download"]], "get_fresh_token() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.get_fresh_token"]], "hostname (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.hostname"]], "list_access_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_access_in_drs_manifest"]], "list_drs_object() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_drs_object"]], "list_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_files_in_drs_manifest"]], "load() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load"]], "load_manifest() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load_manifest"]], "md5sum (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.md5sum"]], "object_id (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_id"]], "object_id (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.object_id"]], "object_type (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_type"]], "pprint() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.pprint"]], "resolve_objects() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.resolve_objects"]], "start_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.start_time"]], "status (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.status"]], "updated_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.updated_time"]], "user_access() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.user_access"]], "acls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ACLS"]], "authz (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.AUTHZ"]], "current_dir (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.CURRENT_DIR"]], "guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.GUID"]], "indexd_record_page_size (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.INDEXD_RECORD_PAGE_SIZE"]], "max_concurrent_requests (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.MAX_CONCURRENT_REQUESTS"]], "max_concurrent_requests (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.MAX_CONCURRENT_REQUESTS"]], "md5 (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.MD5"]], "prev_guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.PREV_GUID"]], "size (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.SIZE"]], "tmp_folder (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.TMP_FOLDER"]], "threadcontrol (class in gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ThreadControl"]], "urls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.URLS"]], "async_download_object_manifest() (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.async_download_object_manifest"]], "async_verify_object_manifest() (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.async_verify_object_manifest"]], "delete_all_guids() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.delete_all_guids"]], "gen3.tools.indexing.download_manifest": [[11, "module-gen3.tools.indexing.download_manifest"]], "gen3.tools.indexing.index_manifest": [[11, "module-gen3.tools.indexing.index_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, "module-gen3.tools.indexing.verify_manifest"]], "index_object_manifest() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.index_object_manifest"]], "column_to_use_as_guid (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID"]], "guid_type_for_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_INDEXED_FILE_OBJECT"]], "guid_type_for_non_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"]], "max_concurrent_requests (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.MAX_CONCURRENT_REQUESTS"]], "async_ingest_metadata_manifest() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest"]], "async_query_urls_from_indexd() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_query_urls_from_indexd"]], "gen3.tools.metadata.ingest_manifest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "gen3wsstorage (class in gen3.wss)": [[13, "gen3.wss.Gen3WsStorage"]], "copy() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.copy"]], "download() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download"]], "download_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download_url"]], "ls() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls"]], "ls_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls_path"]], "rm() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm"]], "rm_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm_path"]], "upload() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload"]], "upload_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload_url"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["auth", "file", "index", "indexing", "jobs", "metadata", "object", "query", "submission", "tools", "tools/drs_pull", "tools/indexing", "tools/metadata", "wss"], "filenames": ["auth.rst", "file.rst", "index.rst", "indexing.rst", "jobs.rst", "metadata.rst", "object.rst", "query.rst", "submission.rst", "tools.rst", "tools/drs_pull.rst", "tools/indexing.rst", "tools/metadata.rst", "wss.rst"], "titles": ["Gen3 Auth Helper", "Gen3 File Class", "Welcome to Gen3 SDK\u2019s documentation!", "Gen3 Index Class", "Gen3 Jobs Class", "Gen3 Metadata Class", "Gen3 Object Class", "Gen3 Query Class", "Gen3 Submission Class", "Gen3 Tools", "DRS Download Tools", "Indexing Tools", "Metadata Tools", "Gen3 Workspace Storage"], "terms": {"class": [0, 2, 10, 11, 13], "gen3auth": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "endpoint": [0, 1, 2, 3, 4, 5, 7, 8, 13], "none": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "refresh_fil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "refresh_token": 0, "idp": 0, "client_credenti": 0, "client_scop": 0, "sourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "base": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "authbas": 0, "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "request": [0, 1, 3, 5, 8, 11, 12], "implement": 0, "order": [0, 8], "support": [0, 1, 5, 8, 11], "jwt": 0, "authent": 0, "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13], "access": [0, 1, 3, 7, 10], "token": [0, 10], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "provid": [0, 1, 3, 5, 7, 8, 12], "refresh": [0, 10], "file": [0, 2, 3, 4, 8, 9, 10, 11, 12, 13], "string": [0, 3, 5, 11, 13], "automat": 0, "when": [0, 3, 7, 10, 12], "thei": [0, 10], "expir": [0, 1], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "str": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12], "opt": 0, "The": [0, 1, 2, 3, 5, 8, 10, 11], "contain": [0, 2, 5, 8, 9, 10, 11, 12], "download": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "json": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "web": 0, "option": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "work": [0, 10], "workspac": [0, 2], "default": [0, 1, 3, 7, 8, 11, 12], "env": 0, "gen3_api_kei": 0, "credenti": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "set": [0, 1, 5, 10], "includ": [0, 3], "search": [0, 2, 3], "path": [0, 1, 5, 10, 11, 13], "valu": [0, 1, 3, 5, 7, 10, 11], "doe": [0, 12], "interpret": 0, "wt": [0, 10], "an": [0, 3, 6, 8, 10, 11], "accesstoken": 0, "If": [0, 1, 7, 11, 12], "can": [0, 3, 4, 8, 11, 12], "specifi": [0, 1, 3, 11, 13], "local": [0, 13], "indic": [0, 11], "environ": 0, "fenc": [0, 1], "tupl": [0, 3, 11, 12], "client_id": 0, "client_secret": 0, "oidc": 0, "client": [0, 3], "ha": [0, 11], "grant": 0, "allow": [0, 6, 8, 10, 11, 12], "obtain": [0, 10], "space": [0, 11], "separ": [0, 11], "list": [0, 1, 3, 4, 5, 7, 8, 10, 11, 13], "scope": [0, 1], "user": [0, 10, 12], "data": [0, 1, 3, 5, 7, 8, 10, 11], "openid": 0, "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "point": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "sandbox": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "common": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "while": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "profil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "page": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13], "instal": [0, 2, 11], "crdc": 0, "some": [0, 2], "arbitrari": 0, "kei": [0, 3, 5, 13], "variabl": [0, 7, 8], "rather": 0, "than": [0, 5], "pass": [0, 7, 8, 10], "argument": [0, 13], "constructor": 0, "id": [0, 1, 3, 5, 10, 11], "secret": 0, "note": [0, 3, 11, 12], "should": [0, 8, 11], "never": 0, "hardcod": 0, "http": [0, 7, 11, 12], "datacommon": 0, "o": 0, "gen3_oidc_client_creds_secret": 0, "initi": [0, 10], "follow": [0, 11], "curl": [0, 2], "given": [0, 3, 4, 5, 8, 10, 12, 13], "ex": [0, 11, 12], "return": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "respons": [0, 1, 3, 4, 5], "under": [0, 8, 13], "index": [0, 2, 5, 9], "authz": [0, 1, 2, 3, 9, 10, 11], "map": [0, 11], "get": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 13], "post": [0, 11], "put": 0, "delet": [0, 1, 2, 3, 5, 6, 8, 10, 11], "i": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12], "els": [0, 12], "filenam": [0, 8, 10, 11, 12], "get_access_token": [0, 2], "auto": [0, 2], "within": [0, 2, 9], "5": [0, 5], "minut": 0, "get_access_token_from_wt": [0, 2], "try": 0, "fetch": 0, "namespac": [0, 12], "refresh_access_token": [0, 2], "new": [0, 3], "gen3fil": [1, 2], "auth_provid": [1, 2, 3, 4, 5, 6, 7, 8, 13], "object": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13], "For": [1, 5, 6, 7, 8, 9, 11], "interact": [1, 3, 4, 5, 6, 8, 13], "manag": [1, 5, 10], "featur": [1, 6], "A": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "servic": [1, 3, 4, 5, 6, 8, 11, 12, 13], "presign": 1, "url": [1, 2, 3, 9, 10, 11, 12, 13], "right": 1, "now": [1, 8], "instanc": [1, 3, 6, 7, 8, 9, 10], "auth": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "delete_fil": [1, 2], "guid": [1, 2, 3, 5, 6, 9, 11, 12], "method": [1, 7, 10], "deprec": 1, "delete_file_loc": [1, 2, 6], "instead": [1, 7, 11], "all": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12], "locat": [1, 6], "store": [1, 3, 10], "remov": [1, 6, 11, 13], "its": [1, 3], "record": [1, 3, 5, 7, 8, 11, 12], "indexd": [1, 3, 6, 10, 11, 12], "uuid": [1, 3, 8], "text": [1, 7, 8], "result": [1, 8, 10, 11], "type": [1, 3, 4, 5, 7, 8, 10, 11, 12], "download_singl": [1, 2], "object_id": [1, 2, 9, 10], "singl": [1, 5, 8], "": [1, 4, 8, 10, 11], "uniqu": [1, 5], "get_presigned_url": [1, 2], "protocol": 1, "retriev": [1, 8, 10, 12], "give": 1, "limit": [1, 3, 5, 12], "time": [1, 8, 10, 11], "pick": 1, "avail": [1, 2, 10, 11], "queri": [1, 2, 3, 5, 8, 11, 12], "upload_fil": [1, 2], "file_nam": [1, 2, 3, 9, 10, 11], "expires_in": 1, "bucket": [1, 6], "upload": [1, 2, 3, 8, 13], "author": 1, "storag": [1, 2, 6], "s3": [1, 10, 11], "az": 1, "isn": 1, "t": [1, 5, 11], "int": [1, 3, 5, 7, 8, 10, 11, 12], "amount": [1, 9], "second": [1, 4], "sign": 1, "datetim": [1, 10], "utcnow": 1, "Be": 1, "sure": 1, "posit": [1, 7], "integ": [1, 3, 8], "also": 1, "treat": [1, 5], "max_presigned_url_ttl": 1, "configur": 1, "must": [1, 5], "allowed_data_upload_bucket": 1, "data_upload_bucket": 1, "represent": [1, 3], "document": [1, 3], "upload_file_to_guid": [1, 2], "exist": [1, 3, 5, 6, 9, 12], "readm": 2, "python": [2, 9, 11], "github": [2, 7], "repo": 2, "setup": 2, "inform": [2, 3, 10], "along": 2, "quickstart": 2, "script": 2, "more": [2, 5, 7, 9, 10], "detail": [2, 7, 10], "about": [2, 3], "variou": 2, "function": [2, 3, 4, 5, 9, 10, 11, 12], "mostli": 2, "docstr": 2, "code": [2, 8], "helper": 2, "gen3index": [2, 3], "async_create_record": [2, 3], "async_get_record": [2, 3], "async_get_records_from_checksum": [2, 3], "async_get_records_on_pag": [2, 3], "async_get_with_param": [2, 3], "async_query_url": [2, 3], "async_update_record": [2, 3], "create_blank": [2, 3], "create_new_vers": [2, 3], "create_record": [2, 3], "delete_record": [2, 3, 8], "get_all_record": [2, 3], "get_guids_prefix": [2, 3], "get_latest_vers": [2, 3], "get_record": [2, 3], "get_record_doc": [2, 3], "get_records_on_pag": [2, 3], "get_stat": [2, 3], "get_url": [2, 3], "get_valid_guid": [2, 3], "get_vers": [2, 3, 4, 5], "get_with_param": [2, 3], "is_healthi": [2, 3, 4, 5], "query_url": [2, 3], "update_blank": [2, 3], "update_record": [2, 3], "job": 2, "gen3job": [2, 4, 10], "async_run_job_and_wait": [2, 4], "create_job": [2, 4], "get_output": [2, 4], "get_statu": [2, 4], "list_job": [2, 4], "metadata": [2, 3, 6, 9, 11], "gen3metadata": [2, 5], "async_cr": [2, 5], "async_create_alias": [2, 5], "async_delete_alia": [2, 5], "async_delete_alias": [2, 5], "async_get": [2, 5], "async_get_alias": [2, 5], "async_upd": [2, 5], "async_update_alias": [2, 5], "batch_creat": [2, 5], "creat": [2, 3, 4, 5, 6, 8, 10, 11], "create_alias": [2, 5], "create_index_key_path": [2, 5], "delete_alia": [2, 5], "delete_alias": [2, 5], "delete_index_key_path": [2, 5], "get_alias": [2, 5], "get_index_key_path": [2, 5], "updat": [2, 3, 5, 10, 11], "update_alias": [2, 5], "gen3object": [2, 6], "delete_object": [2, 6], "gen3queri": [2, 7], "graphql_queri": [2, 7], "raw_data_download": [2, 7], "submiss": 2, "gen3submiss": [2, 8], "create_program": [2, 8], "create_project": [2, 8], "delete_nod": [2, 8], "delete_program": [2, 8], "delete_project": [2, 8], "export_nod": [2, 8], "export_record": [2, 8], "get_dictionary_al": [2, 8], "get_dictionary_nod": [2, 8], "get_graphql_schema": [2, 8], "get_program": [2, 8], "get_project_dictionari": [2, 8], "get_project_manifest": [2, 8], "get_project": [2, 8], "open_project": [2, 8], "submit_fil": [2, 8], "submit_record": [2, 8], "tool": 2, "dr": [2, 9], "downloadmanag": [2, 9, 10], "cache_hosts_wts_token": [2, 9, 10], "get_fresh_token": [2, 9, 10], "resolve_object": [2, 9, 10], "user_access": [2, 9, 10], "downloadstatu": [2, 9, 10], "statu": [2, 4, 9, 10], "start_tim": [2, 9, 10], "end_tim": [2, 9, 10], "object_typ": [2, 9, 10], "hostnam": [2, 9, 10], "file_s": [2, 9, 10, 11], "updated_tim": [2, 9, 10], "created_tim": [2, 9, 10], "access_method": [2, 9, 10], "children": [2, 9, 10], "_manag": [2, 9, 10], "pprint": [2, 9, 10], "manifest": [2, 8, 9, 10, 11, 12], "md5sum": [2, 9, 10], "commons_url": [2, 9, 10, 11, 12], "create_object_list": [2, 9, 10], "load": [2, 9, 10], "load_manifest": [2, 9, 10], "download_drs_object": [], "download_files_in_drs_manifest": [2, 9, 10], "list_access_in_drs_manifest": [2, 9, 10], "list_drs_object": [2, 9, 10], "list_files_in_drs_manifest": [2, 9, 10], "current_dir": [2, 9, 11], "indexd_record_page_s": [2, 9, 11], "max_concurrent_request": [2, 9, 11, 12], "tmp_folder": [2, 9, 11], "async_download_object_manifest": [2, 9, 11], "size": [2, 3, 9, 10, 11], "md5": [2, 3, 9, 11], "acl": [2, 3, 9, 11], "prev_guid": [2, 9, 11], "threadcontrol": [2, 9, 11], "delete_all_guid": [2, 9, 11], "index_object_manifest": [2, 9, 11], "verifi": [2, 9], "async_verify_object_manifest": [2, 9, 11], "ingest": [2, 9], "column_to_use_as_guid": [2, 9, 12], "guid_type_for_indexed_file_object": [2, 9, 12], "guid_type_for_non_indexed_file_object": [2, 9, 12], "async_ingest_metadata_manifest": [2, 9, 12], "async_query_urls_from_indexd": [2, 9, 12], "gen3wsstorag": [2, 13], "copi": [2, 13], "download_url": [2, 13], "l": [2, 13], "ls_path": [2, 13], "rm": [2, 13], "rm_path": [2, 13], "upload_url": [2, 13], "modul": [2, 10, 11], "service_loc": [3, 4, 5], "public": [3, 5], "read": [3, 5, 11], "onli": [3, 5, 7, 8, 10, 11], "necessari": [3, 5], "basic": [3, 11, 12], "cred": 3, "async": [3, 4, 5, 9, 11, 12], "hash": [3, 11], "did": 3, "baseid": 3, "urls_metadata": 3, "version": [3, 4, 5], "_ssl": [3, 4, 5], "asynchron": [3, 4, 5], "dict": [3, 4, 5, 10, 11, 12], "eg": 3, "ab167e49d25b488939b1ede42752458b": 3, "associ": [3, 5], "made": 3, "where": [3, 5, 11, 12], "you": [3, 8, 11], "control": 3, "rbac": 3, "name": [3, 4, 8, 10, 11, 12, 13], "addit": [3, 5, 10, 11], "entri": [3, 11], "attach": [3, 5], "each": [3, 8, 10, 11], "group": 3, "previou": [3, 11], "checksum": [3, 10], "checksum_typ": 3, "match": [3, 5, 12], "param": [3, 5, 8, 10], "correspond": 3, "suppli": 3, "need": [3, 7, 10, 11], "handl": [3, 10], "hash_typ": 3, "whether": [3, 4, 5, 8, 11, 12], "ssl": [3, 4, 5], "pattern": [3, 12], "against": [3, 7, 8, 11, 12], "kwarg": [3, 4, 5], "bodi": 3, "dictionari": [3, 4, 5, 7, 8], "format": [3, 5, 8, 11], "blank": 3, "add": [3, 5], "sinc": 3, "content": [3, 13], "immut": 3, "want": [3, 8], "chang": [3, 11], "That": 3, "field": [3, 5, 7, 11, 12], "old": 3, "ad": 3, "least": 3, "one": [3, 5, 10, 11], "suffici": 3, "good": 3, "idea": 3, "number": [3, 7, 8, 11, 12], "noth": [3, 6], "dist_resolut": 3, "true": [3, 4, 5, 6, 7, 8, 10, 11, 12], "alia": [3, 5], "distribut": 3, "identifi": [3, 5, 9, 11], "boolean": 3, "we": [3, 11], "pagin": 3, "fals": [3, 5, 6, 10, 11], "start": [3, 4, 7, 8, 10], "prefix": 3, "rtype": 3, "has_vers": 3, "latest": 3, "exclud": 3, "without": [3, 5], "repres": [3, 5, 10], "info": [3, 11], "algorithm": 3, "count": 3, "valid": [3, 7], "file_st": 3, "like": [3, 5, 9, 11, 12], "signpost": 3, "healthi": [3, 4, 5], "rev": 3, "revis": 3, "simpl": 3, "consist": 3, "mechan": 3, "dispatch": 4, "job_nam": 4, "job_input": 4, "wait": 4, "output": [4, 5, 11, 12], "Will": [4, 7, 10], "sleep": 4, "linear": 4, "delai": 4, "until": [4, 10], "done": 4, "1": [4, 5, 8, 10, 11], "global": [4, 5], "input": [4, 10, 11], "job_id": 4, "previous": 4, "complet": [4, 11], "bool": [4, 5, 8, 10, 11, 12], "md": [5, 7, 10, 12], "admin_endpoint_suffix": 5, "admin": [5, 11], "alias": 5, "overwrit": 5, "what": 5, "end": [5, 10], "up": [5, 9], "blob": [5, 7], "asyncron": 5, "altern": [5, 11], "merg": 5, "AND": 5, "descript": 5, "metadata_list": 5, "specif": [5, 8, 11, 12], "expect": [5, 9, 11], "anoth": 5, "databas": 5, "return_full_metadata": 5, "10": [5, 7, 11], "offset": [5, 7], "0": [5, 7, 8, 11], "use_agg_md": 5, "off": 5, "logic": [5, 12], "filter": [5, 7], "b": [5, 11], "2": [5, 11], "have": [5, 11], "ar": [5, 7, 8, 9, 10, 11], "alwai": 5, "nest": 5, "c": [5, 11], "3": [5, 11], "same": [5, 11, 13], "whose": 5, "ani": [5, 10, 11], "But": 5, "differ": 5, "33": 5, "d": 5, "4": [5, 11], "e": [5, 10], "won": 5, "333": 5, "defin": [5, 8, 10], "api": [5, 8, 11], "just": [5, 11, 12], "max": 5, "num": 5, "OR": 5, "level": 6, "current": [6, 8, 10], "system": [6, 7, 8, 9], "elasticsearch": 7, "query_str": 7, "execut": [7, 8, 11], "graphql": [7, 8], "query_txt": [7, 8], "syntax": 7, "see": [7, 10, 11], "com": 7, "uc": 7, "cdi": 7, "guppi": 7, "master": 7, "doc": [7, 10], "data_typ": 7, "my_index": 7, "my_field": 7, "first": [7, 8], "filter_object": 7, "sort_object": 7, "verbos": [7, 8], "row": [7, 8, 11, 12], "sort": 7, "equal": 7, "respect": 7, "complex": 7, "appli": 7, "One": 7, "unaccess": 7, "regular": 7, "tier": 7, "mode": 7, "subject": [7, 8], "50": 7, "vital_statu": 7, "submitter_id": 7, "aliv": 7, "asc": 7, "sort_field": 7, "raw": [7, 11], "project_id": [7, 8], "my_program": 7, "my_project": 7, "submit": [8, 11], "export": [8, 10], "sheepdog": 8, "through": [8, 11], "peregrin": 8, "sub": 8, "program": [8, 11], "project": [8, 11], "dcf": 8, "node_nam": 8, "batch_siz": 8, "100": [8, 11], "node": 8, "how": [8, 11], "mani": [8, 11], "print": [8, 10], "progress": [8, 10], "log": [8, 10, 11, 12], "ccle": 8, "demograph": 8, "ordered_node_list": 8, "revers": 8, "graph": 8, "experi": 8, "empti": [8, 11], "uuid1": 8, "uuid2": 8, "node_typ": 8, "fileformat": 8, "which": [8, 10], "belong": 8, "either": 8, "tsv": [8, 11, 12], "screen": 8, "sampl": [8, 10], "ccle_sample_nod": 8, "d70b41b9": 8, "6f90": 8, "4714": 8, "8420": 8, "e043ab8b77b9": 8, "ccle_one_record": 8, "entir": 8, "schema": 8, "run": [8, 11], "introspect": 8, "regist": 8, "mark": 8, "open": [8, 10, 11], "mean": 8, "etc": 8, "max_tri": 8, "retri": 8, "fail": [8, 10], "chunk_siz": 8, "30": 8, "row_offset": 8, "spreadsheet": 8, "multipl": [8, 11], "csv": [8, 11, 12], "xlsx": 8, "worksheet": 8, "skip": 8, "data_spreadsheet": 8, "arrai": 8, "action": [9, 11], "These": 9, "broken": 9, "broad": 9, "categori": 9, "task": 9, "relat": 9, "persist": 9, "Such": 9, "mai": [9, 11], "involv": 9, "assign": 9, "everi": [9, 11], "alreadi": 9, "larg": 9, "most": 9, "util": 9, "capabl": 9, "make": [9, 11], "effici": 9, "main": 10, "datafil": 10, "manifest_1": 10, "my_common": 10, "org": 10, "gen3": [10, 11, 12], "my_credenti": 10, "howto": 10, "drsdownload": 10, "drs_download": 10, "download_list": 10, "show_progress": 10, "assist": 10, "minimum": 10, "interest": 10, "object_list": 10, "host": 10, "It": 10, "possibl": 10, "save_directori": 10, "unpack_packag": 10, "delete_unpacked_packag": 10, "directori": [10, 11], "call": [10, 13], "case": 10, "error": [10, 11, 12], "continu": 10, "save": 10, "show": 10, "bar": 10, "disabl": 10, "unpack": 10, "packag": 10, "after": 10, "them": [10, 11], "drs_hostnam": 10, "known": 10, "otherwis": 10, "success": 10, "resolv": 10, "permiss": 10, "wai": 10, "determin": [10, 11, 12], "reason": 10, "pend": 10, "objectid": 10, "datamanag": 10, "occur": 10, "attribut": [10, 11], "drsobjecttyp": 10, "unknown": 10, "factori": 10, "popul": [10, 12], "server": 10, "requir": 10, "byte": 10, "timestamp": 10, "last": 10, "g": 10, "child": 10, "bundl": 10, "self": 10, "indent": 10, "pretti": 10, "In": 10, "similar": 10, "linux": 10, "tree": 10, "command": [10, 11], "typic": 10, "discoveri": 10, "cach": 10, "files": 10, "static": 10, "bownload": 10, "successfulli": 10, "pars": [10, 11, 12, 13], "output_dir": 10, "conveni": 10, "infil": 10, "wrapper": 10, "cli": 10, "process": 11, "coroutin": 11, "asyncio": [11, 12], "librari": 11, "comma": 11, "header": 11, "download_manifest": 11, "per": [11, 12], "maximum": [11, 12], "desir": 11, "concurr": [11, 12], "across": 11, "thread": 11, "folder": 11, "place": 11, "temporari": 11, "write": 11, "safe": 11, "so": 11, "To": 11, "workaround": 11, "concat": 11, "output_filenam": [11, 12], "num_process": 11, "24": [11, 12], "input_manifest": 11, "python_subprocess_command": 11, "root": [11, 12], "domain": [11, 12], "live": [11, 12], "parallel": 11, "hit": 11, "total": 11, "help": 11, "everyth": 11, "attempt": 11, "By": 11, "someth": 11, "maco": 11, "x": 11, "python3": 11, "tab": 11, "session": 11, "column": [11, 12], "shown": 11, "below": 11, "255e396f": 11, "f1f8": 11, "11e9": 11, "9a07": 11, "0a80fada099c": 11, "473d83400bc1bc9dc635e334faddf33c": 11, "363455714": 11, "pdcdatastor": 11, "test1": 11, "0a80fada098c": 11, "473d83400bc1bc9dc635e334faddd33c": 11, "343434344": 11, "test2": 11, "0a80fada097c": 11, "473d83400bc1bc9dc635e334fadd433c": 11, "543434443": 11, "phs0001": 11, "phs0002": 11, "test3": 11, "0a80fada096c": 11, "test4": 11, "0a80fada010c": 11, "473d83400bc1bc9dc635e334fadde33c": 11, "test5": 11, "index_manifest": 11, "usag": 11, "py": 11, "giangb": 11, "planx": 11, "pla": 11, "net": 11, "manifest_fil": [11, 12], "path_to_manifest": 11, "replace_url": 11, "thread_num": 11, "api_kei": 11, "processed_fil": 11, "num_total_fil": 11, "synchron": 11, "warn": 11, "IF": 11, "know": 11, "THE": 11, "implic": 11, "manifest_file_delimit": [11, 12], "submit_additional_metadata_column": 11, "force_metadata_columns_even_if_empti": 11, "loop": 11, "password": [11, 12], "flag": 11, "replac": 11, "delimit": 11, "forc": 11, "creation": 11, "even": 11, "enabl": 11, "illustr": 11, "columna": 11, "columnb": 11, "columnc": 11, "dataa": 11, "datab": 11, "guid_exampl": 11, "md5_hash": 11, "fieldnam": 11, "There": 11, "those": 11, "abov": 11, "overrid": [11, 12], "assum": 11, "behavior": 11, "simpli": 11, "manifest_row_pars": [11, 12], "custom": 11, "import": 11, "verify_manifest": 11, "def": 11, "_get_authz_from_row": 11, "strip": 11, "parser": [11, 12], "verify_object_manifest": 11, "verif": 11, "error_nam": 11, "value_from_manifest": 11, "actual": 11, "value_from_indexd": 11, "93d9af72": 11, "b0f1": 11, "450c": 11, "a5c6": 11, "7d3d8d2083b4": 11, "dev": 11, "test": 11, "_get_acl_from_row": 11, "_get_file_name_from_row": 11, "_get_file_size_from_row": 11, "_get_guid_from_row": 11, "_get_md5_from_row": 11, "_get_urls_from_row": 11, "1692675811": [], "9771066": [], "indexd_field": [11, 12], "func_to_parse_row": [11, 12], "delimet": [11, 12], "metdata": 12, "ingest_manifest": 12, "NOT": 12, "guid_from_fil": 12, "_get_guid_for_row": 12, "indexed_file_object_guid": 12, "_query_for_associated_indexd_record_guid": 12, "guid_for_row": 12, "elsewher": 12, "metadata_sourc": 12, "1692675812": [], "3144128": [], "get_guid_from_fil": 12, "metadata_typ": 12, "dbgap": 12, "usual": 12, "fill": 12, "_guid_typ": 12, "is_indexed_file_object": 12, "lock": 12, "semaphor": 12, "semaphon": 12, "ammount": 12, "connect": 12, "wss": 13, "src_urlstr": 13, "dest_urlstr": 13, "appropri": 13, "src_w": 13, "src_wskei": 13, "dest_path": 13, "disk": 13, "w": 13, "wskei": 13, "ws_urlstr": 13, "form": 13, "src_path": 13, "dest_w": 13, "dest_wskei": 13, "1692676927": [], "2291234": [], "6143494": [], "1692716275": [], "1734753": [], "577429": [], "1692716527": [], "4222114": [], "9511294": [], "1692717039": [], "3338752": [], "744264": [], "1692741377": [], "0982177": [], "4559627": [], "1692743380": [], "4060478": [], "7860734": [], "1692743691": [], "983341": [], "1692743692": [], "4543839": [], "1692825679": [], "249731": [], "5510318": [], "1692886743": [], "381985": [], "8074749": [], "1693233058": [], "3038826": [], "6020522": [], "1693234093": [11, 12], "2159688": 11, "5807943": 12}, "objects": {"gen3.auth": [[0, 0, 1, "", "Gen3Auth"]], "gen3.auth.Gen3Auth": [[0, 1, 1, "", "curl"], [0, 1, 1, "", "get_access_token"], [0, 1, 1, "", "get_access_token_from_wts"], [0, 1, 1, "", "refresh_access_token"]], "gen3.file": [[1, 0, 1, "", "Gen3File"]], "gen3.file.Gen3File": [[1, 1, 1, "", "delete_file"], [1, 1, 1, "", "delete_file_locations"], [1, 1, 1, "", "download_single"], [1, 1, 1, "", "get_presigned_url"], [1, 1, 1, "", "upload_file"], [1, 1, 1, "", "upload_file_to_guid"]], "gen3.index": [[3, 0, 1, "", "Gen3Index"]], "gen3.index.Gen3Index": [[3, 1, 1, "", "async_create_record"], [3, 1, 1, "", "async_get_record"], [3, 1, 1, "", "async_get_records_from_checksum"], [3, 1, 1, "", "async_get_records_on_page"], [3, 1, 1, "", "async_get_with_params"], [3, 1, 1, "", "async_query_urls"], [3, 1, 1, "", "async_update_record"], [3, 1, 1, "", "create_blank"], [3, 1, 1, "", "create_new_version"], [3, 1, 1, "", "create_record"], [3, 1, 1, "", "delete_record"], [3, 1, 1, "", "get"], [3, 1, 1, "", "get_all_records"], [3, 1, 1, "", "get_guids_prefix"], [3, 1, 1, "", "get_latest_version"], [3, 1, 1, "", "get_record"], [3, 1, 1, "", "get_record_doc"], [3, 1, 1, "", "get_records"], [3, 1, 1, "", "get_records_on_page"], [3, 1, 1, "", "get_stats"], [3, 1, 1, "", "get_urls"], [3, 1, 1, "", "get_valid_guids"], [3, 1, 1, "", "get_version"], [3, 1, 1, "", "get_versions"], [3, 1, 1, "", "get_with_params"], [3, 1, 1, "", "is_healthy"], [3, 1, 1, "", "query_urls"], [3, 1, 1, "", "update_blank"], [3, 1, 1, "", "update_record"]], "gen3.jobs": [[4, 0, 1, "", "Gen3Jobs"]], "gen3.jobs.Gen3Jobs": [[4, 1, 1, "", "async_run_job_and_wait"], [4, 1, 1, "", "create_job"], [4, 1, 1, "", "get_output"], [4, 1, 1, "", "get_status"], [4, 1, 1, "", "get_version"], [4, 1, 1, "", "is_healthy"], [4, 1, 1, "", "list_jobs"]], "gen3.metadata": [[5, 0, 1, "", "Gen3Metadata"]], "gen3.metadata.Gen3Metadata": [[5, 1, 1, "", "async_create"], [5, 1, 1, "", "async_create_aliases"], [5, 1, 1, "", "async_delete_alias"], [5, 1, 1, "", "async_delete_aliases"], [5, 1, 1, "", "async_get"], [5, 1, 1, "", "async_get_aliases"], [5, 1, 1, "", "async_update"], [5, 1, 1, "", "async_update_aliases"], [5, 2, 1, "", "auth_provider"], [5, 1, 1, "", "batch_create"], [5, 1, 1, "", "create"], [5, 1, 1, "", "create_aliases"], [5, 1, 1, "", "create_index_key_path"], [5, 1, 1, "", "delete"], [5, 1, 1, "", "delete_alias"], [5, 1, 1, "", "delete_aliases"], [5, 1, 1, "", "delete_index_key_path"], [5, 2, 1, "", "endpoint"], [5, 1, 1, "", "get"], [5, 1, 1, "", "get_aliases"], [5, 1, 1, "", "get_index_key_paths"], [5, 1, 1, "", "get_version"], [5, 1, 1, "", "is_healthy"], [5, 1, 1, "", "query"], [5, 1, 1, "", "update"], [5, 1, 1, "", "update_aliases"]], "gen3.object": [[6, 0, 1, "", "Gen3Object"]], "gen3.object.Gen3Object": [[6, 1, 1, "", "delete_object"]], "gen3.query": [[7, 0, 1, "", "Gen3Query"]], "gen3.query.Gen3Query": [[7, 1, 1, "", "graphql_query"], [7, 1, 1, "", "query"], [7, 1, 1, "", "raw_data_download"]], "gen3.submission": [[8, 0, 1, "", "Gen3Submission"]], "gen3.submission.Gen3Submission": [[8, 1, 1, "", "create_program"], [8, 1, 1, "", "create_project"], [8, 1, 1, "", "delete_node"], [8, 1, 1, "", "delete_nodes"], [8, 1, 1, "", "delete_program"], [8, 1, 1, "", "delete_project"], [8, 1, 1, "", "delete_record"], [8, 1, 1, "", "delete_records"], [8, 1, 1, "", "export_node"], [8, 1, 1, "", "export_record"], [8, 1, 1, "", "get_dictionary_all"], [8, 1, 1, "", "get_dictionary_node"], [8, 1, 1, "", "get_graphql_schema"], [8, 1, 1, "", "get_programs"], [8, 1, 1, "", "get_project_dictionary"], [8, 1, 1, "", "get_project_manifest"], [8, 1, 1, "", "get_projects"], [8, 1, 1, "", "open_project"], [8, 1, 1, "", "query"], [8, 1, 1, "", "submit_file"], [8, 1, 1, "", "submit_record"]], "gen3": [[9, 3, 0, "-", "tools"]], "gen3.tools.download": [[10, 3, 0, "-", "drs_download"]], "gen3.tools.download.drs_download": [[10, 0, 1, "", "DownloadManager"], [10, 0, 1, "", "DownloadStatus"], [10, 0, 1, "", "Downloadable"], [10, 0, 1, "", "Manifest"], [10, 4, 1, "", "download_files_in_drs_manifest"], [10, 4, 1, "", "list_access_in_drs_manifest"], [10, 4, 1, "", "list_drs_object"], [10, 4, 1, "", "list_files_in_drs_manifest"]], "gen3.tools.download.drs_download.DownloadManager": [[10, 1, 1, "", "cache_hosts_wts_tokens"], [10, 1, 1, "", "download"], [10, 1, 1, "", "get_fresh_token"], [10, 1, 1, "", "resolve_objects"], [10, 1, 1, "", "user_access"]], "gen3.tools.download.drs_download.DownloadStatus": [[10, 2, 1, "", "end_time"], [10, 2, 1, "", "start_time"], [10, 2, 1, "", "status"]], "gen3.tools.download.drs_download.Downloadable": [[10, 2, 1, "", "_manager"], [10, 2, 1, "", "access_methods"], [10, 2, 1, "", "children"], [10, 2, 1, "", "created_time"], [10, 1, 1, "", "download"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 2, 1, "", "hostname"], [10, 2, 1, "", "object_id"], [10, 2, 1, "", "object_type"], [10, 1, 1, "", "pprint"], [10, 2, 1, "", "updated_time"]], "gen3.tools.download.drs_download.Manifest": [[10, 2, 1, "", "commons_url"], [10, 1, 1, "", "create_object_list"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 1, 1, "", "load"], [10, 1, 1, "", "load_manifest"], [10, 2, 1, "", "md5sum"], [10, 2, 1, "", "object_id"]], "gen3.tools.indexing": [[11, 3, 0, "-", "download_manifest"], [11, 3, 0, "-", "index_manifest"], [11, 3, 0, "-", "verify_manifest"]], "gen3.tools.indexing.download_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "INDEXD_RECORD_PAGE_SIZE"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 2, 1, "", "TMP_FOLDER"], [11, 4, 1, "", "async_download_object_manifest"]], "gen3.tools.indexing.index_manifest": [[11, 2, 1, "", "ACLS"], [11, 2, 1, "", "AUTHZ"], [11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "GUID"], [11, 2, 1, "", "MD5"], [11, 2, 1, "", "PREV_GUID"], [11, 2, 1, "", "SIZE"], [11, 0, 1, "", "ThreadControl"], [11, 2, 1, "", "URLS"], [11, 4, 1, "", "delete_all_guids"], [11, 4, 1, "", "index_object_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 4, 1, "", "async_verify_object_manifest"]], "gen3.tools.metadata": [[12, 3, 0, "-", "ingest_manifest"]], "gen3.tools.metadata.ingest_manifest": [[12, 2, 1, "", "COLUMN_TO_USE_AS_GUID"], [12, 2, 1, "", "GUID_TYPE_FOR_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [12, 4, 1, "", "async_ingest_metadata_manifest"], [12, 4, 1, "", "async_query_urls_from_indexd"]], "gen3.wss": [[13, 0, 1, "", "Gen3WsStorage"]], "gen3.wss.Gen3WsStorage": [[13, 1, 1, "", "copy"], [13, 1, 1, "", "download"], [13, 1, 1, "", "download_url"], [13, 1, 1, "", "ls"], [13, 1, 1, "", "ls_path"], [13, 1, 1, "", "rm"], [13, 1, 1, "", "rm_path"], [13, 1, 1, "", "upload"], [13, 1, 1, "", "upload_url"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:module", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "auth": 0, "helper": 0, "file": 1, "class": [1, 3, 4, 5, 6, 7, 8], "welcom": 2, "sdk": 2, "": 2, "document": 2, "indic": 2, "tabl": 2, "index": [3, 11], "job": 4, "metadata": [5, 12], "object": 6, "queri": 7, "submiss": 8, "tool": [9, 10, 11, 12], "dr": 10, "download": [10, 11], "verifi": 11, "ingest": 12, "workspac": 13, "storag": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Gen3 Auth Helper": [[0, "gen3-auth-helper"]], "Gen3 File Class": [[1, "gen3-file-class"]], "Welcome to Gen3 SDK\u2019s documentation!": [[2, "welcome-to-gen3-sdk-s-documentation"]], "Indices and tables": [[2, "indices-and-tables"]], "Gen3 Index Class": [[3, "gen3-index-class"]], "Gen3 Jobs Class": [[4, "gen3-jobs-class"]], "Gen3 Metadata Class": [[5, "gen3-metadata-class"]], "Gen3 Object Class": [[6, "gen3-object-class"]], "Gen3 Query Class": [[7, "gen3-query-class"]], "Gen3 Submission Class": [[8, "gen3-submission-class"]], "Gen3 Tools": [[9, "gen3-tools"]], "DRS Download Tools": [[10, "module-gen3.tools.download.drs_download"]], "Indexing Tools": [[11, "indexing-tools"]], "Download": [[11, "module-gen3.tools.indexing.download_manifest"]], "Index": [[11, "module-gen3.tools.indexing.index_manifest"]], "Verify": [[11, "module-gen3.tools.indexing.verify_manifest"]], "Metadata Tools": [[12, "metadata-tools"]], "Ingest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "Gen3 Workspace Storage": [[13, "gen3-workspace-storage"]]}, "indexentries": {"gen3auth (class in gen3.auth)": [[0, "gen3.auth.Gen3Auth"]], "curl() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.curl"]], "get_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token"]], "get_access_token_from_wts() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token_from_wts"]], "refresh_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.refresh_access_token"]], "gen3file (class in gen3.file)": [[1, "gen3.file.Gen3File"]], "delete_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file"]], "delete_file_locations() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file_locations"]], "download_single() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.download_single"]], "get_presigned_url() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.get_presigned_url"]], "upload_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file"]], "upload_file_to_guid() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file_to_guid"]], "gen3index (class in gen3.index)": [[3, "gen3.index.Gen3Index"]], "async_create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_create_record"]], "async_get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_record"]], "async_get_records_from_checksum() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_from_checksum"]], "async_get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_on_page"]], "async_get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_with_params"]], "async_query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_query_urls"]], "async_update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_update_record"]], "create_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_blank"]], "create_new_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_new_version"]], "create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_record"]], "delete_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.delete_record"]], "get() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get"]], "get_all_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_all_records"]], "get_guids_prefix() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_guids_prefix"]], "get_latest_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_latest_version"]], "get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record"]], "get_record_doc() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record_doc"]], "get_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records"]], "get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records_on_page"]], "get_stats() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_stats"]], "get_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_urls"]], "get_valid_guids() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_valid_guids"]], "get_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_version"]], "get_versions() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_versions"]], "get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_with_params"]], "is_healthy() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.is_healthy"]], "query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.query_urls"]], "update_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_blank"]], "update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_record"]], "gen3jobs (class in gen3.jobs)": [[4, "gen3.jobs.Gen3Jobs"]], "async_run_job_and_wait() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.async_run_job_and_wait"]], "create_job() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.create_job"]], "get_output() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_output"]], "get_status() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_status"]], "get_version() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_version"]], "is_healthy() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.is_healthy"]], "list_jobs() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.list_jobs"]], "gen3metadata (class in gen3.metadata)": [[5, "gen3.metadata.Gen3Metadata"]], "async_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create"]], "async_create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create_aliases"]], "async_delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_alias"]], "async_delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_aliases"]], "async_get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get"]], "async_get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get_aliases"]], "async_update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update"]], "async_update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update_aliases"]], "auth_provider (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.auth_provider"]], "batch_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.batch_create"]], "create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create"]], "create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_aliases"]], "create_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_index_key_path"]], "delete() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete"]], "delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_alias"]], "delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_aliases"]], "delete_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_index_key_path"]], "endpoint (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.endpoint"]], "get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get"]], "get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_aliases"]], "get_index_key_paths() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_index_key_paths"]], "get_version() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_version"]], "is_healthy() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.is_healthy"]], "query() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.query"]], "update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update"]], "update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update_aliases"]], "gen3object (class in gen3.object)": [[6, "gen3.object.Gen3Object"]], "delete_object() (gen3.object.gen3object method)": [[6, "gen3.object.Gen3Object.delete_object"]], "gen3query (class in gen3.query)": [[7, "gen3.query.Gen3Query"]], "graphql_query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.graphql_query"]], "query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.query"]], "raw_data_download() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.raw_data_download"]], "gen3submission (class in gen3.submission)": [[8, "gen3.submission.Gen3Submission"]], "create_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_program"]], "create_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_project"]], "delete_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_node"]], "delete_nodes() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_nodes"]], "delete_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_program"]], "delete_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_project"]], "delete_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_record"]], "delete_records() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_records"]], "export_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_node"]], "export_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_record"]], "get_dictionary_all() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_all"]], "get_dictionary_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_node"]], "get_graphql_schema() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_graphql_schema"]], "get_programs() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_programs"]], "get_project_dictionary() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_dictionary"]], "get_project_manifest() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_manifest"]], "get_projects() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_projects"]], "open_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.open_project"]], "query() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.query"]], "submit_file() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_file"]], "submit_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_record"]], "gen3.tools": [[9, "module-gen3.tools"]], "module": [[9, "module-gen3.tools"], [10, "module-gen3.tools.download.drs_download"], [11, "module-gen3.tools.indexing.download_manifest"], [11, "module-gen3.tools.indexing.index_manifest"], [11, "module-gen3.tools.indexing.verify_manifest"], [12, "module-gen3.tools.metadata.ingest_manifest"]], "downloadmanager (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadManager"]], "downloadstatus (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadStatus"]], "downloadable (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Downloadable"]], "manifest (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Manifest"]], "_manager (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable._manager"]], "access_methods (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.access_methods"]], "cache_hosts_wts_tokens() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.cache_hosts_wts_tokens"]], "children (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.children"]], "commons_url (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.commons_url"]], "create_object_list() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.create_object_list"]], "created_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.created_time"]], "download() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.download"]], "download() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.download"]], "download_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.download_files_in_drs_manifest"]], "end_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.end_time"]], "file_name (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_name"]], "file_name (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_name"]], "file_size (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_size"]], "file_size (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_size"]], "gen3.tools.download.drs_download": [[10, "module-gen3.tools.download.drs_download"]], "get_fresh_token() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.get_fresh_token"]], "hostname (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.hostname"]], "list_access_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_access_in_drs_manifest"]], "list_drs_object() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_drs_object"]], "list_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_files_in_drs_manifest"]], "load() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load"]], "load_manifest() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load_manifest"]], "md5sum (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.md5sum"]], "object_id (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_id"]], "object_id (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.object_id"]], "object_type (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_type"]], "pprint() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.pprint"]], "resolve_objects() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.resolve_objects"]], "start_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.start_time"]], "status (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.status"]], "updated_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.updated_time"]], "user_access() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.user_access"]], "acls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ACLS"]], "authz (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.AUTHZ"]], "current_dir (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.CURRENT_DIR"]], "guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.GUID"]], "indexd_record_page_size (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.INDEXD_RECORD_PAGE_SIZE"]], "max_concurrent_requests (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.MAX_CONCURRENT_REQUESTS"]], "max_concurrent_requests (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.MAX_CONCURRENT_REQUESTS"]], "md5 (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.MD5"]], "prev_guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.PREV_GUID"]], "size (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.SIZE"]], "tmp_folder (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.TMP_FOLDER"]], "threadcontrol (class in gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ThreadControl"]], "urls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.URLS"]], "async_download_object_manifest() (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.async_download_object_manifest"]], "async_verify_object_manifest() (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.async_verify_object_manifest"]], "delete_all_guids() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.delete_all_guids"]], "gen3.tools.indexing.download_manifest": [[11, "module-gen3.tools.indexing.download_manifest"]], "gen3.tools.indexing.index_manifest": [[11, "module-gen3.tools.indexing.index_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, "module-gen3.tools.indexing.verify_manifest"]], "index_object_manifest() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.index_object_manifest"]], "column_to_use_as_guid (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID"]], "guid_type_for_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_INDEXED_FILE_OBJECT"]], "guid_type_for_non_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"]], "max_concurrent_requests (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.MAX_CONCURRENT_REQUESTS"]], "async_ingest_metadata_manifest() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest"]], "async_query_urls_from_indexd() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_query_urls_from_indexd"]], "gen3.tools.metadata.ingest_manifest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "gen3wsstorage (class in gen3.wss)": [[13, "gen3.wss.Gen3WsStorage"]], "copy() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.copy"]], "download() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download"]], "download_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download_url"]], "ls() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls"]], "ls_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls_path"]], "rm() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm"]], "rm_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm_path"]], "upload() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload"]], "upload_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload_url"]]}}) \ No newline at end of file diff --git a/docs/_build/html/tools/indexing.html b/docs/_build/html/tools/indexing.html index ee8166867..f15d537eb 100644 --- a/docs/_build/html/tools/indexing.html +++ b/docs/_build/html/tools/indexing.html @@ -380,7 +380,7 @@

                      Indexing Tools
                      -async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1693236046.1047835.log')[source]
                      +async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1693234093.2159688.log')[source]

                      Verify all file object records into a manifest csv

                      Parameters:
                      diff --git a/docs/_build/html/tools/metadata.html b/docs/_build/html/tools/metadata.html index 0e1e68c4e..d7860a28e 100644 --- a/docs/_build/html/tools/metadata.html +++ b/docs/_build/html/tools/metadata.html @@ -101,7 +101,7 @@

                      Metadata Tools
                      -async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1693236046.485695.log', get_guid_from_file=True, metadata_type=None)[source]
                      +async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1693234093.5807943.log', get_guid_from_file=True, metadata_type=None)[source]

                      Ingest all metadata records into a manifest csv

                      Parameters:
                      From a7b78d11c6ab4f2c0e630cf17e13080d9df74026 Mon Sep 17 00:00:00 2001 From: Spencer Axelrod Date: Tue, 5 Dec 2023 23:09:31 -0600 Subject: [PATCH 08/12] Revert "Apply automatic documentation changes" This reverts commit 559f35fffe45a3578e614d6e377a902f011291b3. --- docs/_build/doctrees/environment.pickle | Bin 1553141 -> 1553141 bytes docs/_build/doctrees/tools/indexing.doctree | Bin 100101 -> 100101 bytes docs/_build/doctrees/tools/metadata.doctree | Bin 35919 -> 35919 bytes docs/_build/html/searchindex.js | 2 +- docs/_build/html/tools/indexing.html | 2 +- docs/_build/html/tools/metadata.html | 2 +- 6 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index aa7f839dff029bb4296bfbe1075882c78520de38..cc0330841e2661df8be3a695771bd1f15bfbe032 100644 GIT binary patch delta 9845 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 NNCg`wKYv{O{{Vn_G)w>h delta 9845 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 diff --git a/docs/_build/doctrees/tools/indexing.doctree b/docs/_build/doctrees/tools/indexing.doctree index a9ad6a6e2673eaff1495d83734e5568118a3ade3..2dbcd31e50f008fe0c24dc2ed68f5a345f1bf02d 100644 GIT binary patch delta 113 zcmZqeV{7eWYuLiL-Ad5dz|=y|*udDr!pKZ7CqG?%^8Cf3+wWR2ny~U9%Wao+V0^-j ZA~c=XhtVBXB*BN#21R813LnN;D*)<^9XIndexing Tools
                      -async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1693234093.2159688.log')[source]
                      +async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1693233058.3038826.log')[source]

                      Verify all file object records into a manifest csv

                      Parameters:
                      diff --git a/docs/_build/html/tools/metadata.html b/docs/_build/html/tools/metadata.html index d7860a28e..27980da2a 100644 --- a/docs/_build/html/tools/metadata.html +++ b/docs/_build/html/tools/metadata.html @@ -101,7 +101,7 @@

                      Metadata Tools
                      -async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1693234093.5807943.log', get_guid_from_file=True, metadata_type=None)[source]
                      +async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1693233058.6020522.log', get_guid_from_file=True, metadata_type=None)[source]

                      Ingest all metadata records into a manifest csv

                      Parameters:
                      From 2b7a64609c2be82b02873dcac24904c8482c61f6 Mon Sep 17 00:00:00 2001 From: Spencer Axelrod Date: Tue, 5 Dec 2023 23:09:51 -0600 Subject: [PATCH 09/12] Revert "Apply automatic documentation changes" This reverts commit 172b64fc3fa33f0a09c0a63473a2a9ee110f60b9. --- docs/_build/doctrees/environment.pickle | Bin 1553141 -> 1554905 bytes docs/_build/doctrees/tools/drs_pull.doctree | Bin 130169 -> 130578 bytes docs/_build/doctrees/tools/indexing.doctree | Bin 100101 -> 101126 bytes docs/_build/doctrees/tools/metadata.doctree | Bin 35919 -> 36402 bytes docs/_build/html/index.html | 8 +++--- docs/_build/html/searchindex.js | 2 +- docs/_build/html/tools.html | 8 +++--- docs/_build/html/tools/drs_pull.html | 6 ++--- docs/_build/html/tools/indexing.html | 26 ++++++++++---------- docs/_build/html/tools/metadata.html | 10 ++++---- 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index cc0330841e2661df8be3a695771bd1f15bfbe032..938f75edabf21a2fb73f6c9bb45fb5f75f9539e2 100644 GIT binary patch delta 93224 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 R^1tBQAyZdPn>Hll{{hDMGV1^U diff --git a/docs/_build/doctrees/tools/drs_pull.doctree b/docs/_build/doctrees/tools/drs_pull.doctree index 6b3e2107f55cfbe928c54d2fb8704e2fc0260372..c433ab810143e0bc8772b13b914dfd3c68e95126 100644 GIT binary patch literal 130578 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

                      j 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 literal 130169 zcmeHw37i~9d9QA*R+lBqLbkl}SORN=r4RSk^XAW^|AN(>nOePhY`k2pHd|G%(+@_ftx9j& zYj*qh_qW~Ezr9}!mbJ@AJFQ;3;`M`hC{d}^8`ZYg>>un0tEhOl-sp^r`b#@rrCV<` z!|JugwI#Ks2m8g^vS4wy-fei=r(o^Xx9lri-8$NAw93`O{#L8e=~HPGUbNpkM!kqF z^YT9L+me|wdeZIJ)&$E+Vb^O5gC(NJdxJ%ddeiIg?M;@0(Q>!ju21&5z?3jsSg&>n zi=~xDxzoW*JTGpRr}@)JwKt>wm@HQgx4kJU(+ie%%ZKPwzqY!zv9_XiZf#+0EVyoG ztu^iKZ1YLcKZKt<^gPPQFOlq8?&AaAUd3vVdbtXm&_-{Xv8m!~B%b3Z9E=J=zFwzaJ$qpZp z!c42)?0VHgxy!zGFus$mV}(j|_I&5%FP z%v8HI%?pVJX4RfiSN6KKA|zMa>(olryURD< zG0r9)HDqDEdE0h{h3Xv5mpZsyed8k`q0L}^c8hgY!NMk#H^q=d+Y6h=H*e##+vj<} zAF{C4I@)cK1h`sA1B}l2GzI|hr(2jgRj*rywvjqwb=8}yH|wNuN;H49xh^E-vS6K6 zrd02G(^|n>{}swmG1x3I*X%IXFid3)0a#KJRj^oIhMEm#axs#@L{{$|3^W+?kU6rb z>$P=G2$qFxAce5@Mv1z~?4s@$g{WHvQTOvq%#A8`)R<7(NYCarS8Z|ds?&%OB{fc~ zKB@8OWgiczdKP0m+H5>lLhwL~bW2SAXhU-AX2^w~Oh6$l5+|VGjh|49xiG2J;#>>v zdwFNlw333Qf)o2?!=zt!Y`QVgnJJU|H8KM&?zNA2eX^roDwtRajf(~ohPCy<05#PF z{MGyuko+c0K+kC?&Y%#arn}G!G!grJczMnie-nc5uOM3wprLg9hjfOJa<1=K~ z-2{v60I%TiN<-YrlMV0S_Cg0nVhINLAxwqNL}3!{Gi;k{VYhqRm@p~=Ll}m@qugw^ zx@9XI5j_3Ct}R`}7A6W?*&uA)y}htY;$31hZK4nsDQw-n8_qS0V5|=ovl@NH`k&WX zAAmyw@`f}b2lES3kK#$S@R;6$$-Tk+qoy#RS^s5l<>y_KqSmjymJ0q23Vxb59^7}z zJ@arFg@~je$9znzdBF-kRtP~+L`8<3U;>?=%J!0=8A>XG{~(#*#b7yje+Q&2>r1eb zy2gf_{q5<3S(5pCip;g|hDa@ANZA;zw&sxRf8>4GTYm+t5LbsssKdOsBLp+Cqy8wh z6taZY*R`y#6fl|gU=mx7RPdV9Z=#F&D5qQ4b)9=w8r=?SupuQ0SF#6ZL{^ZaqF$)s zc&c+ag89wJg!PMz?*5bU594<@q+G@#;Mc5ldl3OOe?s;EPYU#9DWGSfpr2)c{)*IL z38Kiq!3m-EO~Wt|vPj_NZ$sU%{e{p790yGA8LwG|xGx<;5JDRup-9&Utgu4!7u=oD zqn*ppVzot)xPGu;<~YKicmd@Cg)0O#g4cLcZXfcxeGVvCjyIhduTr0?SNbOqC_FyF z!*=~3RTq;5c6@^CfW07q|MQ%{x8fh$s_>tQmo~*rW=J+{gmCf62dQoJH?j8pE%+y- z@hYxxrIzIkZVtmDDk6D_|Dovoa%!3duH#~M&fed}yECD8CxL12cSE@rpCdF9T+5-< zQn~g)Cx`^D6(|^7J7Un%Kd7M>GOH@1DETgT2NF2eZ=jmuSiebs>g>9fsXxP%>N~jC z?@$Br{P}i#%Eh0YJVWv4`IgnktUam!m@OB_vT(=wVi1q#v9+M}(8I=CMf%SHu>qO* zGmIvF7AF1&Hxw5Wb13Od{O?W>2}~?dFqn94BAsLTc@Y)Yl+0p8+mi{Z+dqs~h4i&} zIar9LlD@&r%Qc&SP%fU2zV#-p5j!B|+x!C>8s|9C@LeM&pu|#Zh0ebkxS|tWMyf?6 zK6+T9J$yh7R zw@UcDz)cO8{(l~-Mp!xC?5nwtW^F@H?r~8wP<`^uqN~xS~Ilp*=lRHbTI#N$*p)&^nIrj zWH7%Kbs644RW|xrk@{071SjiY1!hUT$+9yvr++bv`3(oBHW@cLLZmBa}Zg<&2bEkiT%=k~}Naqwe?&87O)96ke)=bkYg?=hGZW!ou zN%2R#a`csF<{(Zrex&Xltsp(8AFP&-2yInr1`DLcC3VYkTZwx-9hQ*dO2B|41$U`l z?fa|H&tM7uK$IGJKW5eng`@p%F(S&46L%^!;(WAB*(yl7f$!Z9Mk#E;6Ds;fSS47J z-5X;Xv$iA{nL_3abLV+CM@!vSg{a-_^!<^A^X9SFcf%rKA5=;5VLypzFN@n?6donh zM+-_-T1X?%a-mc*lZv^&?J7zhDs)=~`~zc(Et9L|>q41jmQeDFZaj!&5=up=)F@A( zT$sj6_H=K$faHd9fu$f!i=2>AsvIVu6p*zfa!@>E6;(UbHsw1YAc}Tqm0W;li6uQO z7?jGD3ZkW9Zpjm>&ua3o#ZYE5PHAAV)_1zbJt1IM3tR?WTc~{`xTR9A)VvaftvaQn z_yGsItoM{A^%-Er_|!`ww$v0(-VYy{EffmI<^1 zOQ9<_8qAJh8iVWcZtfbDMf6xlFBI}YoxcAREvB`VF}lawvj3WU#~}d!BWT@w(Q`) zf&OIcaQffP)()P?eIi)eL~1JKbe{-T$=5q5Y5O?dtPmgN-)m4pn4q1o(CTJOzLVvs zC4$%Sx|G7qe45(FnWZEQjWIzhN{${Vl>z3))m33u4rgFIE4P6m;U=0CoL_3miu%@t zP!IN`l+EhedFbSX@)568t+$aU-fACbnGr}%*gC$|nYXaL&}$;W=P+EB%3-7wtF(sw z?VgAH39o^L*%B}0Rinjt_CsOE?l8CF>UyPnfaPV#Y>O+K$3-54X?tMD2amYRDX(6r zx%nqzdd1JpjP}JJg^dLNubAm_+bqN#<;tjb(vuF`F5aQ>et|uK!H2yl+ zS%a<6P(VdnXJm#GsaCNTJ`dfC3|jmu%?2kX&gBFFCD$s=1x|2T2^U$XoyAp}K}Z|F zQZwPiH3Mn2$Q{CV8K$XOL8qp4Get7PU-4OOxMXK{k`$+qSjGfeWtNtT%YLoY*R5`9 zxK?WRqiTem<5y~?+)!LHh(k%2L0u<^1Q{eyFi03?=)^D7SUEX&yTJ~+PQ#$MmT6Mv z!!NP1$+1+EmCO&g@r_@q5oCTubFY)uWgd36@4p{SM6zPU!c0~a-sc42=9EwBC@h5a zDrXpbR@3TZP8j|dZ8XwXU^sR|iIO>9^!=(EXO}4X5~^ktC6BwIxI_tuk}gXA%LyWZ zK?DkhD9O9%yJqoh*e?+^oWAIrB28AJUv~JwsrRx{`a(Ct@zO+4I*T-Uma~1QG|7s> zbxsg&W-+8m%JS~dI^hf=Q80;%TP7n#4B2XAgth~Vucu*T&s3kg9sIl-%vv3f^0#(IPtO}sj4JEasfq@@4JcO z5;*^fsu=~&(j_ik?{q^slyre}mJ>t*4+#{85;$AkfKQpg*@AxMvSYGR`bsy#@d8Is zI*Y)$+1b8R;ABPNpc90fSqy=bV#geI!Wl&5a13*b9Cz`^da(-7`;Stv)7+ug_OKnZHF@W_hj)}uLaLt~l@}*A^bmgsGly{*0r%{bfH{zh9 zc!C}vf^w6tz&1IN9bD zh9b@tgA!-NB+jy6bgJ$(s(g2b+LI#lesO>)`>t8Q>XWEyA1W~VTzRa5IJ9nkpubW` z{9GO+{O42YjsAZ6XG|LFFi^3lMs#GdRXrZ*C_XQr#9j%nn~dW!VgdV*Jdr1==HrvK zq>(}~nl!Sluww^5?}UzHS=GRyd+lt~hkSsk2={%g>R z%t#He<5pmA?7e+EA(MEpKmzKb{ix?-f;2ba3h3rbHKjfe+O)fOn`2Jk`{Kf5ciyj^ zR^;3BCfV)>I@p4<(eI#xE`k!;FC-*3`b}2UZ{r`yWD&u$+syqa6d_WWuu-Nc>^~|* zc3_cN2$Sr1S28N)?u!>|AObsYM6i|pS~1rAkvudPg6KyKxriX5*ZTOy2qJR|Fb`dH z(TWMI&($v>bk0O2*Z2&>@Eg!}CWa4*V=$ymn>dDyDRV(aR!{?KH^FopKQ8TWl_wZ|^X;qL1pA{y{{DhsNZ}76USzYjn^;RLiCl|*EPQIRTOoWr^ zbuLa;i34bh|Dk#|X|?7iwczCv>sfNqVR*TUwlnc^NFIZiZR*7Fa!i?XoeZGJWmiq- z;A>N8m6L;?XRUebJnZ2Z?iN3yj~=S^4xLxQd zdE~t!&#&j=Cc)>gWfY3=IlZ1eK7ZJ1Etz>~Km?z^jrAVqb{x zx2NMKL-Ja$m=(zd6xIGA7ZZx<@fAk6$n>Dsvo}3{V6~Ra^V;xED;-*JTnM=j=$j>rrknLvEr^er>&@nPKoK5--GIcll^$e!dAzqZ?8}`0D z-5H|}+`^0A%!>N^@Q>*`6#ZMZcfrzI#4@Is9^v1LP**H7IXIb-2)+o#?4n9~D8{d8 zU?XnKvngc4_H4!l+B$5zCW~kCI1A2vpctkWbdj$2@C_-%pPL79=G^T;4VUvk1QKIO z1j;p*Zf4p8>VlbMuvl(}aaR(%Kjp%Q8ZT@iH)|HTZy&q+(|-U9C+xfbAUz!iX8v!6 zPjAB03IEOP_bu%Ax7hD*v)_lv#%D@0t-15>Bog7CT4VRkvy-JZL@^8w3`m1F5Fhw+rouUG`)-FPRG?& zBXSBw-m4k$8t072xbN}au#w=w({JBngeWoFAJ;_4&1h%tBTOh%G|wbmp*JN*z;#dJh#*iflGMWJPfVN$wuBWB`kWhV z#{7g?PZIeI8yi!tIy3D#B}@se+X2=Nvj=0^w~I%TpVTb%A0V>vY48eUEl7I;hgRA0 zB^s}e4#ND=tmcGam!=&L%ZA#F=o_aQvxBc3`!s*Vh?LH{XSur{pY_KZw~p$(O-}du zw`o!5Ezb6xsV7-cxX1}2VfG0WVn=upQ!z?TUEv0hah^r;fH;_;$2fi7h}@j`De!G= zH<++v6Yn1!@|3yYycE5koT8)p9!b$T0ZyNj6de!4&JT*2##2m+PQ+XGSOJa1yIDM5z=9PmtcK z>E6pc-O0qKbLgHRb{}}GEpUVFv^V0w&Wd~e$~@GQ?)59E(wNlDWZ600>uvnNL&1aK z?M{!KfQW-4HKq<71t{$tH54PfJ`XC)VSXKIWOSGbW!o*)tr+sHMeyTg8Cn$%vmD=C z4zmH<=#^3%0Ezmdg zaYND3Vgqqau@qJeF+XF-5pxv1d-rN2owxYe#ldRwz&H- zsLPT0o`#go^yi^_kwJ^k7rVrXiF42dlvp1vDJ$$6CpcZf=5ohR-YGz_q>WDw`#C4B z8Axloj?Nej=W(-wPE9LD^G!ahjZ=WmG_qj$-F`w=8B@nfXAvto)?1}ij=HJf+UnXt z)d(BMM-gA{hT@7MawzGt=YA)M1lc1{FbJqJZ{ove@gN%> z(@1bKDJMowCUqB&1QM0`;r}aXJ+9wRX%xk_ITDZCReg^{Q9cV?<|K;pISe9?qI?NY zaZwbz`-xE$tDqJ|ks|>Q_j5ETS)wREcU}DmPR_-4C23r|rF*_~jweHfzXdE-a*}1Rc0;@Gs_S-!Z>2h0G&ytJk zhF;!%6-BhI=L3-pi_Pih~|`wJSm^=r)z4T5FJ?nZu>&FyjdT`^_0W}Vk+XzW&!trRZS zH~OO~<3e*;B5px`qCXGze(VB(nMWV&Zz*(-9kT#I-r>W(nnvB7WmkXzu#3s+LZwElIpe4J;U zBf%VZj$yfXDhAjnT_lD?I(Rtc4ghO=kfyK&+^dGWyx(Q?oL%s7`uAN4ns12_l1j;` z$=G7<6F`)J^Zr$F-XN|~m=`T9#PDxLxkW2Y%ic*j=@iYUO5qeqb&AfDh7sL^{UVhX zEq!gNMN-SDZl9H>+icNxEox+3v?cU18csjP0Hw7m3@163l1H7kp1k8miXKJnsNs~l zXuBKuaKq^edSZqXdm7qs%7O#GkWpUHXwy~P(6gAG|6*Ry!&jVd3Om0i>^yrKr1P~E zlKKPRpfe%Wqc~Ng$WN|;s7|xsa4{ddt8<*)yE!f;{y1gegnyW=n}!{FuWiY9T$L02 zirGw&4pgD6AeLo~Yi!toAmPn6GhUNU=%M>O^5HBjDEE+Y7tG>v22SI*2ZWMG9MY@8+u`MRLYC zvnXjW1B==+pAo!Kj$7Kcn+E}rC2(s}YMCx`@|6etYAlUvavI>SJwllV$E zuJQU`kT}yZ$jgGQ)Hz0kT=Q zSmW)~I9Y;CK+@2aIP0$z(l2u(?Mgej6IC7a_dyOna*S+S$G{ z?<*?`k2ygkFoi%NcEIgDRo`|4$T-*o?5Ro}UsLKhbxPJLHoDqn86;3sOtCCFWrMSQ zr%uU=!UawcZWIii!Wlt?9c`|-*a>A2O~Uar$27(>_Z_CF7R`{N#Ef^u>5&l`0+Cuo zy-+%2j~iW=4!IsxGwP57ZYVAt!l9%~yt)%a0(S@$W>ts0*xiwgVkMHwID0zeC>ytQ zivF@2k$4@#8_%Re-so)KsY9}&@HQui1f~!uWYQsj=mwB+uxD3?@cx_f#;HTHPO;Cp zk&R~vF~zdzkgqt~cj}O=D16HaB7q?U3fXnYkDO2j(ILDG=9s4H5O?uNT5){T@Fb=c z`}f1=O3WNq-HR;ZA4I*`Tg0y|@t5KB9M&7Yf`8!|;?KML{tEd?uEopHF9O0P^dr++ zd~sj5g+xl@P;;^HLAjSaPxJb#)%oz*D=5|eH1t|ucrb%OI`BxN%W{p;2nbP)mGN~DqLK^I&g z0feqDD6}fLY@;(iIzC<~cf0NSWUuQ@Ot7N^*$MQ*dVYaw{;@mXAOJje=No4Ogd)qH zLCHdw6KK5i+>m#6P#z3BiU2%7&$O;!q`L4k1=up=D7UUP)?-y%)g|ww7gSi52E~$Y z890E-FvbT-#8^a!C&&)-KUAkWc{(LiFlMOInB-0Bm!6j%EW*(YoTeH{!zBuYX4tdp z!^`vZfdrX^JPN|x#R%h+eKIGNy6sv*rS%B5AKm~kodJNzvfzW1td>a*->kY%IhljF7oSrx%q zCXpqbl%WyWi^Cx$M3SKY892(YRpaoUG5E3(Pp*_Y9ku+Zgq&}yR8eX>TCqbuJ<^SaAn3Qe* zLX|=R5Rq+4jD_^}e@s<~i(_3%OV}-3VQgPutV)tjth~<4 z+#g~|P57RH(fc7V*C$SG3le2Crge8QIie1k~KvR}=4ZUYelSaOq;KTc6B z)7<2|Qlk!GVAd@9Ye1%8S!gQ7C5urJp6PZ8J+VwT_B2Sc7#F2ud`1nNFLo_vwaBR& zPCZNvpdJL^AykCEEEZK0dx>+on$QcX`TtxhFs!P$DQrZFt+hJG``6+7fU4r`sH%`O zbEyj*S*bEA=!K;+)?)fxFFK#9GA?3_QlN}G@|r@80dFb{NGt83AA2-FO*KM(NZg#N zV;zt?q>!6+)p19jj!D(=Vycv^I@aDi(?u43xp6>}RGhh>G|9cx0$92juS!N_3!0L< zKXXrq(I*OWCZ+N#R;MTf@_^Q9`+EYql1^I9-?3UwRtq}1{)4ENeUqTJc04e;`u0E@ zT~oPOx=h!x>%ry$x~@wchmIu%v{jeYy5-;yfMbHBX+VUImD4Vlj+KH)O%F&>lMF>Z zNNycV!bYTS-Jmm}|2V!6s9T?8>DG{1F3qYCm3npM+K67=fGP9uqT{K0btm8s zqE&O(QzNquT~4-oEODRtjdd%OKIvG|VK#>{)PZv86+E%iRi(>?1|u}e!FB|}RG*o~ELo7}SRW_GbV zh2T``5;j??*Wc;&9KX6==^nrW$o9e=;?0%K;|C7{ zy`;CZ#6}*!-Es-&@2!vpWhHiumM^ig5|8H z2=>y!3HFlV3AQ7b5fVeM0U7|ga@JDRdi~(k`nBPyb#|iP7(fSzTRhIF?P$#@%H^CYK~#J>Bl zYLq*jLJcQ_he_@A=2WXaU8c+ecDPx&pbqgHFHj1-UIGc>Gp(6k1E(uh3sddZG)rKX zXZ#^Ue01_SUDejEdq-s2yk4JG;UI9x;1S%b%Vrwpz-iexHHm)YoJ4wzNh}wfmO&*j z%MS!1*eWq-!thn0i=AW1nnkk1{5NC_Uy>_WIUd5a)~h8xa_Pf$ve+`M5v=H$S;Ob8 z!z|(p)>=8m0q4{AVY9);!bbe%^tkE9MY@~mZ@|lRk>WGSz!Ha-BiNMlK~w ztdq9`4NbXTeKFum2_riQra4D+J9WK!gAyKeV|?+JYkuZuufOG*t9f`C(>%F=qV#0~ znjBKoZ;zR4l9o%*)k{@ZXMF|w<~$vfE6_Jlr7_t>L>0`<4si*=C8|OUnk6B)nz>W@ z>TBM`X4XwTnTfF=O9&QPNhSoBGxtYGN=X{p&TtTw^$FovSS7l;V*O}cF02YpCIHuq z-lYK%3#*cwBr7WIAJ;RnA}ME!8g)!^vu4q6qa!H^!Bm7VtiFz(*upA%8e~O@h|V1;LSu7z}ty6xB@UrD#7#!l^9k9{9f3IWc*Q`8U2Uw zeLxkkAx;G_Y?GCMfvQvkA3`52H9&i%en)gYRSm2qpzM|q+(^S&M%sCCpA>~Z9ug;R zMam)iX@kpOsP4_W=>Jllj!Dt~MXHo6`d1pu+nhium-ky#IZ+8%brl8wBXdWGQ3n?I zOp4+0%ssOd1MTzqCMxUGBu@N_ogzeaTi#lnV<`p#@VBCOX+VTxki3>lG06F&cmh-3 zRtyWyN>vP0ge!(3Ju$_=o=%-&c#d4{7)C2(-$Y2>#JB`Ggi07uZAA3J6`-xq2dbEw zXjjtbVU@ws)7B0Zm9vYzcDlGQ<+C-4%glBfi%t${Dg+^Jzie|Asc zuFUM*21>Pc3p_Nkt=~MK5SfT%D z*oYMR>vbmd{{r6!6#8ZmNMV{R^))o5*#8>fTVkK~`Fu=tJ5}tjr0h$&|7G%c*Xu~b z-+HTP`Y$0late9cN%0NUsaY5D|COg>Qpo?1DmjEaa#C$efAxB&kf$1oTI;BAA_wYX zZzv&8Kr>nOYclu867sZNWF;!=tnU!=L|0pO>e!-n%c>^;-w)Zt8AO!#!%1$+CFJG2 zP@|6NYzz6#z%)h3QxPuYf0~|{kY`V)TFA45Y_gvYGHj%uNiBjow2He+wK6^r*VUQ-|Ss^LpyMS*AdD?jL0@3YMA-{rJ zBfFl4OUiijrK0GILt^9<@te@4W2#HDF5-VVPsgN)52%tu#3Os(7V*D9RkGUgZ_eDQ zp+r1&Gn0saFmrz_5nsUQy%Cjl#y3U$YpXw;$NoFmCjl-ZI7DDugt}!tK{_G2nGB5s z5eB_vt6Z{PP7gKwnANtdeju!^-_{hK)$MzgcHU{~P!|pxh77`-svlS@fI8O6kAo zNfGJ48B^$=MdwqcKiiXxGe4$hNChCPq${tQ$90gpMo2HH=)WADN~XUh0NBoBv9R}K zbbUlrM%QOuOPrUdV^T|;OO=wfgt}gUaixm;@1%N(szOy$bh|in_lD6I3UVf;aZ%<@ zSxVyq4CW40)@O~WGz?uqWVS`H#VVFxKmg7by-NckbcJNDT)IL|CdCAh1h%et4my&e zE2s$96*YQdx`I8OLS3O}5}!m}p@SVpSD5WYbj3@EJA|$j4f&jc#^ezpE&=Zoma_I>&&{ih)XYS`P>V-qiGgaI|8+K8A=|3n;t zx8P${OsV955ey?az!bF^7vlagY(yGO7wZh@KZfrE8ck-3U5ID0xulSkhSHA#-7=Ie z##H&5=ya-~^mJ(`G3X-K8g>%0FX-BmO1Tr}VNdq3?a%9kTX6=ds>WvV*)D_D5(c`c z`6-~cKvbTKVC~s?IwsAf^;9X@Tw2S`CH?R$+gRF0Eo3*A#xwU)w<7ZH+R0%oU1)X4 zHkRz~@%lCCT&HWS*3Fr$bBm6yzYEoJ7)>VhOd8il%hss&cT<(<9k;?0mx9f=qWik6 zacERxKwD8+ty>zE0Guhvng&E@R5|UWJar-?kBO9`NKFsOPqSu`50qP@(pYkhdK*14 zjmn-*p++rX=W_Xw*FK3FRe~HwqpCI{8ufnS2%%BKVoGYiRxpg@0COH@)TsA`jYy3; zp);T#;QOp-)DQuOMh(kIjrtIvTN-r&Q{`UK=~Rt6CV2w;;-NzksMbRxGSHAxN>Tjn zA+d6X6?UQ1zpFYu>tTgI%hNHbCqF=ylJ(?jNh)#Wo~h-&YAY&!K67Vv z{gGE)Mmms5g?u)1-z*ie8zcNFRMsbtLq!nnZOQ9a5d`4gQIiZdV(%$i02>*z>I1e=O*6|v$RsUq0ZsZ$YGR)x`5+?H2K@N-^s-HpZ)J0!$J z4H5j>>2+S|xa#qyy*O9GacNt4tiFM1QJg+&9LRu6Gz96T%vCRxV7LH`GIU&hbJ)n~ zOxhdgLwD(?m<9_3;cDmI-Y?e9haYX-pCyl%JeSUw!KvaQp8m!3$WLoMiAU|I+wF|; z?rxGguxxgUZ%E)^94m)Ru-|KrL8s-MaK0MinW+)~U21k&{)6xo&w8jXW zM`Xt`P^=ZA-FEprx_6e}|0~TABv#1@!OarBuX?<2WuwtLYFa6%*(ywWg^t%ymoecy z9yycds(Cdp4+uo19x)9~OOLSdz$U5zjs%r%4XNa;COs5MRHz?G>WKQ`roa+$bFZg& zz<+?QY;FT4*F7D2V(tlh8bbH@94C^AgPyf>#mr0_dohO4J{RX(IOXt?b+N=%MWP1ys&j^tR7k-L2$Q9{;7EV)q-8)c|D_3bs}seIBiKB z)j((16l4;{Jis`QnVf|3t8C=J>>PtJ=fH5O!2mFoG8q zI(x3q^ejiAw+VGzur*j6E|(nIs#rs=pB<_ND0m zoEWi}V`RAzdkvm!BUb7#X~LQdSwcB(qb)hLPr|B_R0i+fE!aNIfPM3GaSCMjc!60j z+>qt=s(zd#oiB;_8vfVo(0P&wxY2SJ9UNJ1inXlq(d*5nEPi?2-@q^r|XR}f_N=f4o6=0jupCX4^>*zFsrL_Qamv_tETN9=d{)54~-z*x%_f5 zPcVWvh{|aJArae=1Fo?_e&f1I-1s1w*&aPH4Ad>2N2?Q`UAo(H|kKSGgGeM@~E&#Ve9VQ2(7^SFJg62aEF?V0a!tgK&6`|eXE9P{Uqph z0%J3*KGQ|0r$$#B-4g-`UU}->HOUJn?OLO^hUmw+3R$i-QUvrLqQ+vbH5yT9iRHHN zh2o9(r1T`ybw=@>F#>@v6~{7$*RP#|X~t)W>H67s>aa;xqU1*+dv&Rj7U?wFft{8=bNv~()lTNv^yX*1c z2Hv<8n7U1}+WgxzPrc=A-**juRupb`f=C#AfkN!)E~0BSH5^{$29R-h*CEhggrGQ> zp~lygDNZ4jbt=8Zjchzah^dq%{`4+q`_A}NRuul!2_k_Z1PW&SX~#v9sTbf;3C>SA zAq*0K;^58kj4_jahmLSxyOpRV*y%dbgkgGvy-~=1!;S1Sp(!H~!y*rpeGOGJYKiZ- zp|}JEhmtPq7LB>oT>@VS6ih9FBWSW{2|B4p(Q&;Sd`2;nKa%ax5^K>VEb@IN^f2ca zB*WuLb^WRCuEz@n-gqW0ajCO?ry#Jp1jHl88GRLY_yZgaNp)Dl@yc%>6W0z(KC3@yR+xR9W>?eID$ltDBF?}9m|IW@)E zi7_c*^cvD`2`?=LgZxuThezBvx)j9kp=w42@h5I5E(O7%q>H&nogfleLZD!fY;+(6 z@g+C-j1pv46~y1M@kyuLzq`90FAsR*nH0qQO)k~#R1jHFSnULnF!%z6ObTMm4Itz2 z&aQ&s{Wpb)Q$b{%N|(5ijb{ikm9i*^Yn<&n6+~7P_BlZ$FoZxMyMib?p$wuRco)nu z&8Z+ZxmPCQw8V0)ic}TGJEbpPmKp~U9__`ZF#^Ie^ zeZl*0$`+@-$U2qgo##^U3Dgu*DT}^XMrWr?GT&KkcS`b)ey|uh zfc0wM|3j>*B&O@D?nN`5P;d4!o#bV?)El1WbSuV_bxvNEOP^!{lU&5b+W5=yIxz#k zsHNZ^xVqde7g&A(ZnT|gdmW?-v(%)*b)Z(^hJ82hElkS<45UZaDQEw9!8=9?a`JlI zGA~@McPcGhcZ-B5>^BWBy`57S%1}7y=@8`aQ$X$eit@U7A~4vbWnW(`?wG;UN=oT|3;g>;)3U#+Ek!)kGUd zmcuVQshx2r!K=bX8>mt^8WB~o^5z+CAs;{@7SE(sCcJ-;DucxnP8l7Mm9=H`$;_P` zMs+C2`Y|Ah`lDoZ%058L{+^&D&5XF?R-9&>nEErQmgC$kmWDSllKKIZHj<|H z(ECeMn0BU!DNOgu9zd^k5#vyz#BsK6vRb#4C;_-mP%{mPP@;04NqOx=Mk-M$hZJfM zn`X@-A0PK|Su})PiN1rLm=a}Ar&@`!d%x0egOi?uvdD1~N)BI)34WeaHMlRPH4;&x zA0cMITgo_B<&=p2s9+X3`sUQj=!<v!c;p3AIG*~-)Yo}fI< zM8Pdqqvi}w!qh(p)$%A$0-8yA+DH(Ry7IKYn_5HfucbWccHYJ4wJus5%9A+G)=5_D zmhvP3kB1W{nU3g}yh`=U)?9ERBbBF=KWaWeT$(kDe0lZKEh&lk`WQ=aVU)G5zh zJo{@<_w#AlqnI+yY+$u1Gt*coXZd^;^zmN^Y6_hx3n{VOp^u4zC8NS@g^fssxk2Y@ z-^cd>73OMbl8g%q#cNB6m{gT_1EQrW>Eh{z=xC~{Jcm>zRthSIv3=F_H>E;!6;bqk zbx4|=YL6~Lex>T}tgF2T^K?wAz5hv-2332HQ006+!5liGXK zYBX6~>zMi+Qe$zQhNm8^@5sd zK!ndI=b7{xoXAMECuND64-k50%_1Kkx7wp2}48M!sEC3vL8)g%&hQDp5T~C5BanXNQeQRk%rKLVq2;52y;)g{n{|SiC+oP?SpX zX@G4hMY^hcz36hPQhX+kYLL2+PX0QE(^|YX5+rEx9w*1N>)sK*B)?Of^fJ|MO-p?_ zU~M%%mxQFvsY>ad>5CPTv#v^S%+oQcN`IOv4XR2HQ0088^cORCQdcl@>_Hy1I%TU; z`+Fu;demw(qbhBp+MK9T8wp#L+TTqbVktXamD1(UKZjoH0>+_AiQ{YyWwmapQUY*| zpk^8np-SaE%cV-C1XA+>LenHe(P!i1R;5>I~(*iFuIh>C~yxz5K$|lE{dmld>`$ z3o2!O0e7%=>lJaA9-^`7S1QV?<5AE1T((0Or#@Y2NcchvD zGEa+gu6U@dsGa)r40Y-cr$nA(f0pnn+9K3P1UF0eOi$MSgjK_mCh^JI1jgoIeX8l_ z{`^@8Ab8{HbM8+p^TeE}vo?;&cz{0clhWp23(=0#<{1MIigx~2sXgAovH2?c5sXOQ zWOj&ou!!}|*p*;@gUnVh6cRshBH_#p{|>6UWU6&8%D-hO9!WfoC(kREXyn;7{A`U^ z%JxN*8@9NtYkhL)_J@6xX(XY4xh8C!$A!=muy&@6ok+9}-Gc#a9yfbH+OEb8l-r${ zIJZ{_D6yGV<~>M?$0nTMvJx(`(Pc+2!944v6^kNPFnzBR*9@dJjRu`Kaz5P+?uS_u zKQ&HbPJXb_p-_{LB~|_AVpAdP|1m^Fx@(#FY<-rczic7ws3t~*yO~Guq$iBViFn~{ z24fEVa0P;NM5Wxun0!D;(^N( zYj>mo)n6$B-k*nn(sBM3sx&6`Jqc|+#Z~O23DaAH3+2!kie!AlLfsK^P56mh=e)N? z|HV2oO6`m2k$RyJc_7p5N*+>z|9n3B|3Q_qPq0no=OxQv$(U)yRHsLtoTJlh z92TR7%a+#0fso5J4o)tR>*i8oO1IKoNn~zIb*E^JyMoM`MgP<2Z{WBAg}(EU$3-9l z4|%YsQy21hcB56U4j1GYPc=^Wh={{D0UIK$F>N$dq?|I!keVpmF;ni=8uiKX=i=X? z;~K_+S#uZOxWSq_>EVrAtQwYth!1ZN7@Jjfb4L$vTpI!ie)%*CZ*aDW31}?hUw8DL+5uimOJ!4ET*cAM`qTt)yfHhM~x1a0? zN5oNIp$np6{P5pq!(>kI4C88Qq?ltgAt;-YM2m}A$SwUkqj8k z#Qf~6jN_a|sy@ZYoGDWEPfkpn;S>QSSETB@PH;La_JPZ+$)4Irb;jm*{b(}`2U$$S{nMW={H z#!JDI8I4?N*uly1N7d6v{P9Xm|2c_2)-lLD{`f*X>G4NypUH@$$`$1vNEl<3W)@ub ztAvb7jWOQ0$LrQw>|6?JtxzubomNxD4{#F^<-EWF$0r$Gc#d{mVR#i1yDo{9NImU> z-*nj_Z@Ma)+KyY5stka%-cG}wDI@53<_QU>oW(>>ORoT&aztP<=TXpm^N>siXRjWV~wkQliM!hbMBpjrHfH|4@Ygg}1-m107m^jZ&F z#n^3D2sAX+W9;%juv#-MVBIXCIFSf}{yytja#7ua$r}QFFWS~apd{5|L!cpfj1Z_z zowyKaOqsLd$6HNZyH2w9;!}5{|ArJIX>m8=S69e@ii-H>J*?=g#6SNHP3er3Je~w! z#6Q19m9kH*>!t8F)}X|S0_{!j^eR}3>P+?MpsCi3hh6GBXUc6l^oZ_SD73KGpnbI7 z;d2k8Ig2f-(Oq~!4pOkF>O9oQ7*!>bWx27hb(2UwAcyniyvdUU!;>_Ovdi-7$TkVfls?izF`X zFfiASa~Hq8)|#a0PU2pxh9%+R+@_k}U->xMEF zkA!mLng3)4G1kY6^5kfS>T)ESu?r-alW4}@qG2A*_zIr%Xoe-5WLRTEJXTr`m6SE` zTCYHxWbwwvH`D<>!C5!Koaoq54JlC)zA6#(PXdfI%}iF*S%v!wWBzWc0eOf%em(4? zvzpv!CsBe$ClR%km$(Gju}(g3tF-9m(-Yeoz@CP%=mbt#FEf^h*a8oEv~2<&$(I?g z3ei{{qQRa9L1Pv!Gu|V^R3(ZLbV~JRiB2Ha%~TxD$`33qq*jqSH#ZWA}>snUa?EWH}&oNzB z?tE1q`KRjm9fNoLMZhmcXr)n%l>kE4TZPlZgX8o&3@1O!O%?BRLwWxKGRiggi^8_=z)M(_ z0?H@xSE!B_k&ct7@jnzsA9KU{q75rJv(uZQYXVB0>2kaK!d|QEb^0f$3!l)tklD+M zo9*l3^l{wqt+onEEF@FUOgv47#MpB!)H#25&lN7pj4fj4LA#{g##qII4;n=nQ=|B4=;@y zk>nCjm2YeEdakd*nSi)Ryaq>gFA@tn5A|j*79_91q2BO7(48QpPk)MQaDp)VBgw4} zQ(L6f4F$Lv4J3wsv^yDY-2jqbNk?WM@tSoH8|4a9y=H|@doJ|ERV>okumeQnqZ3%V zEKe7tO+67lQPRqFbjOZ3orY2i&|F~(*S3_|3Mk8DdH()=qZ8P)>xC63aK=Gfwo7*G z1aId`JcfJuL>>NFE6**>2{Va76qet#;>y08D8ME5D%}>Y_d!oPWgJ~2vBt_Q3uoYi z?3bl&(Pytq^_cjg2V53JCm68ZhP*IcJESG@pi${$i~dF0oWxyD5@3=>2qBYc!vHf^ zUA8ScUY^44JK@_?Kd{6+EubbhOyGqi{t1sz#N;PDLL94weqfmjy4lQqAYkBin`+52QNSDWY#Rf%RdcUI30G7J4oIa0YGCRextJj-)QA5qvriz zhlCg+W~r#@e}>wNiCM0f=8YLm7p~hD<9r!elzki^y72{67NLe%^aWLYkhs+;Wu8Kk(9!3jHk-U^c(*MOq=L8 zs_sSn#`mG#?E8(>8}2uHAf!)!O22W;A!@aJ0V(!i4E-@`XK@;X?nLMW|9uId^zY%!(nOg1 zPXv1fv!EvMLJTx|;?1mNqTiW^axxSBcB(WctrUvTIyZT2WFY}N`%c`P4%&aBs!J%!6_U;HD4~WPXT@j1L0j`w7uPzwyb@K1 z?DDGEK`|1ttqZr|tZ8o)TWuR0kEbv^tYZ?wpyK=q?ZAgi+)!MZ>>NsZCi^u`5DA&= z0tJI`>}q7@`Nr;#x2|h`z8kETNRi9?V^9Wk{`RqPF&7P;49TgGtj%NRkh^$f!8Ts< z4CQ#=H8-Rm%JIHEhW5JQB}pk9?|7=5Ovn2lAP^HBZ`Hkshe1f6 z{*;dQ8cStr&bCx#knfM8MkZ(b?-HDCxjakI;7Y5D8c(@1t%-cqE8$FQ-{{&sagOHy z*ElK__P;XA0qHWIrdA^O_Yr~1+_}jg%|k8eCjU8A8k067te2DKCVwGMcbS{~In;2O zSDKqlXk~Ph|13kR!cCTAn9EI;f=f|(AUAp8h0;x4L{H33W>2TcO=cVIlTvJQdd!!l z?tEY>B6ge1pw9CZ$xTN5Xc_H<1U~6b^cY5aI4An-u!Z0ar->7tFp}J9H5Ne6NggJt z3|&Q(F4-PZVF)iNilatWADkI*rzS9lG7MnyP7n#6wLrljSw7GD z0XNuF;aR_djY|&Cnp45;Dw928OdWUeh-V!yZHDr!KQ=d{AIh`-^BCGYJnML>oJ`Mp z934*dtX20Sp7lD^n|;rkdc!^I@6r?fDLw0Rla;6DWJ^s3CuKbUrX>sR_zmd{rbNPy2@Pok>CXB>X@QYpPth7KK*S=F!&D? zgU``o_1f(&d)*?O^ukwDr7>w!o=h)%OP=mBFT8*nE~8QN!U?U6UigX(tqLz(j-h1D zWUWeF5t+zRvMDML}$B&0z#I)mTOz_b=yIQ5LvHD_GKL_1YC|^xPh->$c0y zP6KylwwmEl2mRao#b9x_)h##rH_i)2Wf`PJ+&HgClYf4&s?uw>y(Tty^0xK{E99F- zz3KJ$1|!(=(ZyzpPCr;vZB=^RdZROr8>X6FuUW+zGtVnGde{(pf1htZ4VLiDCjGs& z)q8_w2oHGeGPawbrDavzUWGfVrf2ZSat^QrD2MUqsQ43iE#t41-BzVEi6ngb3c!oe z!}f6yaH`enHn9O!`*`Dg?B2zWmS%6dbPV}d(|x>I1%JOjQ=&aNsMX1gdTroxXOM3}Fj^}&x+U@F;$V$;tPZN-n$liJyjyf!FKU9EKc!D_LsN42t;wbBp9tS?p*{#}>>!7AQvwD!5?2di>$ z2H^l+>(oG^25{=*(6Ms!P_KN*1I4TOdx6*N2WMiRQL9}oRXrU3SOu6mqx2H&z?uS@ zphz7jY_z?p`Y}X;f>qe$)GDc0!Gb#2Yh|@JJyQx<5QJqf>fpY16Nhr3nbqtKV{RIL z^=hW$^{TDXv1wwdGrVInt&WF$e^rxlNu^slQt#9`i>}807q+1Zh=^V;l~V)LYz2_% zU^1|IhDKM4Vmz4E#}r>r@eu$)QXrd)xK;(*qpBG4eKaZf6p0PgHCV;G9r4IJecu0~xqjS93Egvh@>W6T@ z%%K|i7spr=>#tz@%1dHn`90WguJ)Oi8m&qhC+rYu$0{}K!K+~S_%m2K~I7e*TDlPAtREz4Y_h zQT%*?ejZtYpLf&G!Ik)#q@VYkfuHx$&vk3?a})hMPCwtFpSP~X&%^YyVI6+P=;tB& z`91o%^ep^bPCtJ^KabMSt?Th~kbb^FKi{OEV^6}*?esIU0Y5A0=P~;ENBRlQ#?O89 zbM86#*-Sq#rJob*X(OKQp`W{P+pGU7`dMGV&qn(B0R4QJe*E+C)1sesoAGlt{m|{1 z>{d{p&awCDoO_?nfb;2$IG=U^`?N#Yr<`t|a=v|9WcFzh+9#*jC#Sg=tkh>dW5tz~ zI$hxnUIu&eHzeR?InML?8(t1G0g_^RvegKM2`jqJdKs2pX0*6WLS>cK8tp?@x4UE< zoMpEqzQ9C+`l+;fq#|(TOr_Om@Hq_=Wa(An{r#9jFYn(1QOZs;E@4V`AUrt0PzxEa fmxr&}{6`eC(&$x5-W;N-KUyV4DRc_w+427e9YTnX diff --git a/docs/_build/doctrees/tools/indexing.doctree b/docs/_build/doctrees/tools/indexing.doctree index 2dbcd31e50f008fe0c24dc2ed68f5a345f1bf02d..8c9f9a5495fe9fa0e4caa78b45b3d8a7a9d1aedc 100644 GIT binary patch literal 101126 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 E|9cpd%m4rY literal 100101 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 diff --git a/docs/_build/doctrees/tools/metadata.doctree b/docs/_build/doctrees/tools/metadata.doctree index 41f21d723e13eccbaba17e2f44f6c80bbb7baff8..19f96a3f2cebb3e68f2d9ee24a5096a8d506ddae 100644 GIT binary patch literal 36402 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 ZYO6xS=tUZ@k5=eFykM$Cm~72Y{U5YHY83zg diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html index bf4d4bba6..57f5e27e3 100644 --- a/docs/_build/html/index.html +++ b/docs/_build/html/index.html @@ -230,7 +230,7 @@

                      Welcome to Gen3 SDK’s documentation!Indexing Tools
                        -
                      • Download
                          +
                        • Download
                        • -
                        • Index
                            +
                          • Index
                          • -
                          • Verify
                              +
                            • Verify
                              • CURRENT_DIR
                              • MAX_CONCURRENT_REQUESTS
                              • async_verify_object_manifest()
                              • @@ -261,7 +261,7 @@

                                Welcome to Gen3 SDK’s documentation!Metadata Tools
                                  -
                                • Ingest
                                    +
                                  • Ingest
                                    • COLUMN_TO_USE_AS_GUID
                                    • GUID_TYPE_FOR_INDEXED_FILE_OBJECT
                                    • GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT
                                    • diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 175ad7349..a470ed6b5 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["auth", "file", "index", "indexing", "jobs", "metadata", "object", "query", "submission", "tools", "tools/drs_pull", "tools/indexing", "tools/metadata", "wss"], "filenames": ["auth.rst", "file.rst", "index.rst", "indexing.rst", "jobs.rst", "metadata.rst", "object.rst", "query.rst", "submission.rst", "tools.rst", "tools/drs_pull.rst", "tools/indexing.rst", "tools/metadata.rst", "wss.rst"], "titles": ["Gen3 Auth Helper", "Gen3 File Class", "Welcome to Gen3 SDK\u2019s documentation!", "Gen3 Index Class", "Gen3 Jobs Class", "Gen3 Metadata Class", "Gen3 Object Class", "Gen3 Query Class", "Gen3 Submission Class", "Gen3 Tools", "DRS Download Tools", "Indexing Tools", "Metadata Tools", "Gen3 Workspace Storage"], "terms": {"class": [0, 2, 10, 11, 13], "gen3auth": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "endpoint": [0, 1, 2, 3, 4, 5, 7, 8, 13], "none": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "refresh_fil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "refresh_token": 0, "idp": 0, "client_credenti": 0, "client_scop": 0, "sourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "base": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "authbas": 0, "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "request": [0, 1, 3, 5, 8, 11, 12], "implement": 0, "order": [0, 8], "support": [0, 1, 5, 8, 11], "jwt": 0, "authent": 0, "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13], "access": [0, 1, 3, 7, 10], "token": [0, 10], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "provid": [0, 1, 3, 5, 7, 8, 12], "refresh": [0, 10], "file": [0, 2, 3, 4, 8, 9, 10, 11, 12, 13], "string": [0, 3, 5, 11, 13], "automat": 0, "when": [0, 3, 7, 10, 12], "thei": [0, 10], "expir": [0, 1], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "str": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12], "opt": 0, "The": [0, 1, 2, 3, 5, 8, 10, 11], "contain": [0, 2, 5, 8, 9, 10, 11, 12], "download": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "json": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "web": 0, "option": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "work": [0, 10], "workspac": [0, 2], "default": [0, 1, 3, 7, 8, 11, 12], "env": 0, "gen3_api_kei": 0, "credenti": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "set": [0, 1, 5, 10], "includ": [0, 3], "search": [0, 2, 3], "path": [0, 1, 5, 10, 11, 13], "valu": [0, 1, 3, 5, 7, 10, 11], "doe": [0, 12], "interpret": 0, "wt": [0, 10], "an": [0, 3, 6, 8, 10, 11], "accesstoken": 0, "If": [0, 1, 7, 11, 12], "can": [0, 3, 4, 8, 11, 12], "specifi": [0, 1, 3, 11, 13], "local": [0, 13], "indic": [0, 11], "environ": 0, "fenc": [0, 1], "tupl": [0, 3, 11, 12], "client_id": 0, "client_secret": 0, "oidc": 0, "client": [0, 3], "ha": [0, 11], "grant": 0, "allow": [0, 6, 8, 10, 11, 12], "obtain": [0, 10], "space": [0, 11], "separ": [0, 11], "list": [0, 1, 3, 4, 5, 7, 8, 10, 11, 13], "scope": [0, 1], "user": [0, 10, 12], "data": [0, 1, 3, 5, 7, 8, 10, 11], "openid": 0, "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "point": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "sandbox": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "common": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "while": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "profil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "page": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13], "instal": [0, 2, 11], "crdc": 0, "some": [0, 2], "arbitrari": 0, "kei": [0, 3, 5, 13], "variabl": [0, 7, 8], "rather": 0, "than": [0, 5], "pass": [0, 7, 8, 10], "argument": [0, 13], "constructor": 0, "id": [0, 1, 3, 5, 10, 11], "secret": 0, "note": [0, 3, 11, 12], "should": [0, 8, 11], "never": 0, "hardcod": 0, "http": [0, 7, 11, 12], "datacommon": 0, "o": 0, "gen3_oidc_client_creds_secret": 0, "initi": [0, 10], "follow": [0, 11], "curl": [0, 2], "given": [0, 3, 4, 5, 8, 10, 12, 13], "ex": [0, 11, 12], "return": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "respons": [0, 1, 3, 4, 5], "under": [0, 8, 13], "index": [0, 2, 5, 9], "authz": [0, 1, 2, 3, 9, 10, 11], "map": [0, 11], "get": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 13], "post": [0, 11], "put": 0, "delet": [0, 1, 2, 3, 5, 6, 8, 10, 11], "i": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12], "els": [0, 12], "filenam": [0, 8, 10, 11, 12], "get_access_token": [0, 2], "auto": [0, 2], "within": [0, 2, 9], "5": [0, 5], "minut": 0, "get_access_token_from_wt": [0, 2], "try": 0, "fetch": 0, "namespac": [0, 12], "refresh_access_token": [0, 2], "new": [0, 3], "gen3fil": [1, 2], "auth_provid": [1, 2, 3, 4, 5, 6, 7, 8, 13], "object": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13], "For": [1, 5, 6, 7, 8, 9, 11], "interact": [1, 3, 4, 5, 6, 8, 13], "manag": [1, 5, 10], "featur": [1, 6], "A": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "servic": [1, 3, 4, 5, 6, 8, 11, 12, 13], "presign": 1, "url": [1, 2, 3, 9, 10, 11, 12, 13], "right": 1, "now": [1, 8], "instanc": [1, 3, 6, 7, 8, 9, 10], "auth": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "delete_fil": [1, 2], "guid": [1, 2, 3, 5, 6, 9, 11, 12], "method": [1, 7, 10], "deprec": 1, "delete_file_loc": [1, 2, 6], "instead": [1, 7, 11], "all": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12], "locat": [1, 6], "store": [1, 3, 10], "remov": [1, 6, 11, 13], "its": [1, 3], "record": [1, 3, 5, 7, 8, 11, 12], "indexd": [1, 3, 6, 10, 11, 12], "uuid": [1, 3, 8], "text": [1, 7, 8], "result": [1, 8, 10, 11], "type": [1, 3, 4, 5, 7, 8, 10, 11, 12], "download_singl": [1, 2], "object_id": [1, 2, 9, 10], "singl": [1, 5, 8], "": [1, 4, 8, 10, 11], "uniqu": [1, 5], "get_presigned_url": [1, 2], "protocol": 1, "retriev": [1, 8, 10, 12], "give": 1, "limit": [1, 3, 5, 12], "time": [1, 8, 10, 11], "pick": 1, "avail": [1, 2, 10, 11], "queri": [1, 2, 3, 5, 8, 11, 12], "upload_fil": [1, 2], "file_nam": [1, 2, 3, 9, 10, 11], "expires_in": 1, "bucket": [1, 6], "upload": [1, 2, 3, 8, 13], "author": 1, "storag": [1, 2, 6], "s3": [1, 10, 11], "az": 1, "isn": 1, "t": [1, 5, 11], "int": [1, 3, 5, 7, 8, 10, 11, 12], "amount": [1, 9], "second": [1, 4], "sign": 1, "datetim": [1, 10], "utcnow": 1, "Be": 1, "sure": 1, "posit": [1, 7], "integ": [1, 3, 8], "also": 1, "treat": [1, 5], "max_presigned_url_ttl": 1, "configur": 1, "must": [1, 5], "allowed_data_upload_bucket": 1, "data_upload_bucket": 1, "represent": [1, 3], "document": [1, 3], "upload_file_to_guid": [1, 2], "exist": [1, 3, 5, 6, 9, 12], "readm": 2, "python": [2, 9, 11], "github": [2, 7], "repo": 2, "setup": 2, "inform": [2, 3, 10], "along": 2, "quickstart": 2, "script": 2, "more": [2, 5, 7, 9, 10], "detail": [2, 7, 10], "about": [2, 3], "variou": 2, "function": [2, 3, 4, 5, 9, 10, 11, 12], "mostli": 2, "docstr": 2, "code": [2, 8], "helper": 2, "gen3index": [2, 3], "async_create_record": [2, 3], "async_get_record": [2, 3], "async_get_records_from_checksum": [2, 3], "async_get_records_on_pag": [2, 3], "async_get_with_param": [2, 3], "async_query_url": [2, 3], "async_update_record": [2, 3], "create_blank": [2, 3], "create_new_vers": [2, 3], "create_record": [2, 3], "delete_record": [2, 3, 8], "get_all_record": [2, 3], "get_guids_prefix": [2, 3], "get_latest_vers": [2, 3], "get_record": [2, 3], "get_record_doc": [2, 3], "get_records_on_pag": [2, 3], "get_stat": [2, 3], "get_url": [2, 3], "get_valid_guid": [2, 3], "get_vers": [2, 3, 4, 5], "get_with_param": [2, 3], "is_healthi": [2, 3, 4, 5], "query_url": [2, 3], "update_blank": [2, 3], "update_record": [2, 3], "job": 2, "gen3job": [2, 4, 10], "async_run_job_and_wait": [2, 4], "create_job": [2, 4], "get_output": [2, 4], "get_statu": [2, 4], "list_job": [2, 4], "metadata": [2, 3, 6, 9, 11], "gen3metadata": [2, 5], "async_cr": [2, 5], "async_create_alias": [2, 5], "async_delete_alia": [2, 5], "async_delete_alias": [2, 5], "async_get": [2, 5], "async_get_alias": [2, 5], "async_upd": [2, 5], "async_update_alias": [2, 5], "batch_creat": [2, 5], "creat": [2, 3, 4, 5, 6, 8, 10, 11], "create_alias": [2, 5], "create_index_key_path": [2, 5], "delete_alia": [2, 5], "delete_alias": [2, 5], "delete_index_key_path": [2, 5], "get_alias": [2, 5], "get_index_key_path": [2, 5], "updat": [2, 3, 5, 10, 11], "update_alias": [2, 5], "gen3object": [2, 6], "delete_object": [2, 6], "gen3queri": [2, 7], "graphql_queri": [2, 7], "raw_data_download": [2, 7], "submiss": 2, "gen3submiss": [2, 8], "create_program": [2, 8], "create_project": [2, 8], "delete_nod": [2, 8], "delete_program": [2, 8], "delete_project": [2, 8], "export_nod": [2, 8], "export_record": [2, 8], "get_dictionary_al": [2, 8], "get_dictionary_nod": [2, 8], "get_graphql_schema": [2, 8], "get_program": [2, 8], "get_project_dictionari": [2, 8], "get_project_manifest": [2, 8], "get_project": [2, 8], "open_project": [2, 8], "submit_fil": [2, 8], "submit_record": [2, 8], "tool": 2, "dr": [2, 9], "downloadmanag": [2, 9, 10], "cache_hosts_wts_token": [2, 9, 10], "get_fresh_token": [2, 9, 10], "resolve_object": [2, 9, 10], "user_access": [2, 9, 10], "downloadstatu": [2, 9, 10], "statu": [2, 4, 9, 10], "start_tim": [2, 9, 10], "end_tim": [2, 9, 10], "object_typ": [2, 9, 10], "hostnam": [2, 9, 10], "file_s": [2, 9, 10, 11], "updated_tim": [2, 9, 10], "created_tim": [2, 9, 10], "access_method": [2, 9, 10], "children": [2, 9, 10], "_manag": [2, 9, 10], "pprint": [2, 9, 10], "manifest": [2, 8, 9, 10, 11, 12], "md5sum": [2, 9, 10], "commons_url": [2, 9, 10, 11, 12], "create_object_list": [2, 9, 10], "load": [2, 9, 10], "load_manifest": [2, 9, 10], "download_drs_object": [], "download_files_in_drs_manifest": [2, 9, 10], "list_access_in_drs_manifest": [2, 9, 10], "list_drs_object": [2, 9, 10], "list_files_in_drs_manifest": [2, 9, 10], "current_dir": [2, 9, 11], "indexd_record_page_s": [2, 9, 11], "max_concurrent_request": [2, 9, 11, 12], "tmp_folder": [2, 9, 11], "async_download_object_manifest": [2, 9, 11], "size": [2, 3, 9, 10, 11], "md5": [2, 3, 9, 11], "acl": [2, 3, 9, 11], "prev_guid": [2, 9, 11], "threadcontrol": [2, 9, 11], "delete_all_guid": [2, 9, 11], "index_object_manifest": [2, 9, 11], "verifi": [2, 9], "async_verify_object_manifest": [2, 9, 11], "ingest": [2, 9], "column_to_use_as_guid": [2, 9, 12], "guid_type_for_indexed_file_object": [2, 9, 12], "guid_type_for_non_indexed_file_object": [2, 9, 12], "async_ingest_metadata_manifest": [2, 9, 12], "async_query_urls_from_indexd": [2, 9, 12], "gen3wsstorag": [2, 13], "copi": [2, 13], "download_url": [2, 13], "l": [2, 13], "ls_path": [2, 13], "rm": [2, 13], "rm_path": [2, 13], "upload_url": [2, 13], "modul": [2, 10, 11], "service_loc": [3, 4, 5], "public": [3, 5], "read": [3, 5, 11], "onli": [3, 5, 7, 8, 10, 11], "necessari": [3, 5], "basic": [3, 11, 12], "cred": 3, "async": [3, 4, 5, 9, 11, 12], "hash": [3, 11], "did": 3, "baseid": 3, "urls_metadata": 3, "version": [3, 4, 5], "_ssl": [3, 4, 5], "asynchron": [3, 4, 5], "dict": [3, 4, 5, 10, 11, 12], "eg": 3, "ab167e49d25b488939b1ede42752458b": 3, "associ": [3, 5], "made": 3, "where": [3, 5, 11, 12], "you": [3, 8, 11], "control": 3, "rbac": 3, "name": [3, 4, 8, 10, 11, 12, 13], "addit": [3, 5, 10, 11], "entri": [3, 11], "attach": [3, 5], "each": [3, 8, 10, 11], "group": 3, "previou": [3, 11], "checksum": [3, 10], "checksum_typ": 3, "match": [3, 5, 12], "param": [3, 5, 8, 10], "correspond": 3, "suppli": 3, "need": [3, 7, 10, 11], "handl": [3, 10], "hash_typ": 3, "whether": [3, 4, 5, 8, 11, 12], "ssl": [3, 4, 5], "pattern": [3, 12], "against": [3, 7, 8, 11, 12], "kwarg": [3, 4, 5], "bodi": 3, "dictionari": [3, 4, 5, 7, 8], "format": [3, 5, 8, 11], "blank": 3, "add": [3, 5], "sinc": 3, "content": [3, 13], "immut": 3, "want": [3, 8], "chang": [3, 11], "That": 3, "field": [3, 5, 7, 11, 12], "old": 3, "ad": 3, "least": 3, "one": [3, 5, 10, 11], "suffici": 3, "good": 3, "idea": 3, "number": [3, 7, 8, 11, 12], "noth": [3, 6], "dist_resolut": 3, "true": [3, 4, 5, 6, 7, 8, 10, 11, 12], "alia": [3, 5], "distribut": 3, "identifi": [3, 5, 9, 11], "boolean": 3, "we": [3, 11], "pagin": 3, "fals": [3, 5, 6, 10, 11], "start": [3, 4, 7, 8, 10], "prefix": 3, "rtype": 3, "has_vers": 3, "latest": 3, "exclud": 3, "without": [3, 5], "repres": [3, 5, 10], "info": [3, 11], "algorithm": 3, "count": 3, "valid": [3, 7], "file_st": 3, "like": [3, 5, 9, 11, 12], "signpost": 3, "healthi": [3, 4, 5], "rev": 3, "revis": 3, "simpl": 3, "consist": 3, "mechan": 3, "dispatch": 4, "job_nam": 4, "job_input": 4, "wait": 4, "output": [4, 5, 11, 12], "Will": [4, 7, 10], "sleep": 4, "linear": 4, "delai": 4, "until": [4, 10], "done": 4, "1": [4, 5, 8, 10, 11], "global": [4, 5], "input": [4, 10, 11], "job_id": 4, "previous": 4, "complet": [4, 11], "bool": [4, 5, 8, 10, 11, 12], "md": [5, 7, 10, 12], "admin_endpoint_suffix": 5, "admin": [5, 11], "alias": 5, "overwrit": 5, "what": 5, "end": [5, 10], "up": [5, 9], "blob": [5, 7], "asyncron": 5, "altern": [5, 11], "merg": 5, "AND": 5, "descript": 5, "metadata_list": 5, "specif": [5, 8, 11, 12], "expect": [5, 9, 11], "anoth": 5, "databas": 5, "return_full_metadata": 5, "10": [5, 7, 11], "offset": [5, 7], "0": [5, 7, 8, 11], "use_agg_md": 5, "off": 5, "logic": [5, 12], "filter": [5, 7], "b": [5, 11], "2": [5, 11], "have": [5, 11], "ar": [5, 7, 8, 9, 10, 11], "alwai": 5, "nest": 5, "c": [5, 11], "3": [5, 11], "same": [5, 11, 13], "whose": 5, "ani": [5, 10, 11], "But": 5, "differ": 5, "33": 5, "d": 5, "4": [5, 11], "e": [5, 10], "won": 5, "333": 5, "defin": [5, 8, 10], "api": [5, 8, 11], "just": [5, 11, 12], "max": 5, "num": 5, "OR": 5, "level": 6, "current": [6, 8, 10], "system": [6, 7, 8, 9], "elasticsearch": 7, "query_str": 7, "execut": [7, 8, 11], "graphql": [7, 8], "query_txt": [7, 8], "syntax": 7, "see": [7, 10, 11], "com": 7, "uc": 7, "cdi": 7, "guppi": 7, "master": 7, "doc": [7, 10], "data_typ": 7, "my_index": 7, "my_field": 7, "first": [7, 8], "filter_object": 7, "sort_object": 7, "verbos": [7, 8], "row": [7, 8, 11, 12], "sort": 7, "equal": 7, "respect": 7, "complex": 7, "appli": 7, "One": 7, "unaccess": 7, "regular": 7, "tier": 7, "mode": 7, "subject": [7, 8], "50": 7, "vital_statu": 7, "submitter_id": 7, "aliv": 7, "asc": 7, "sort_field": 7, "raw": [7, 11], "project_id": [7, 8], "my_program": 7, "my_project": 7, "submit": [8, 11], "export": [8, 10], "sheepdog": 8, "through": [8, 11], "peregrin": 8, "sub": 8, "program": [8, 11], "project": [8, 11], "dcf": 8, "node_nam": 8, "batch_siz": 8, "100": [8, 11], "node": 8, "how": [8, 11], "mani": [8, 11], "print": [8, 10], "progress": [8, 10], "log": [8, 10, 11, 12], "ccle": 8, "demograph": 8, "ordered_node_list": 8, "revers": 8, "graph": 8, "experi": 8, "empti": [8, 11], "uuid1": 8, "uuid2": 8, "node_typ": 8, "fileformat": 8, "which": [8, 10], "belong": 8, "either": 8, "tsv": [8, 11, 12], "screen": 8, "sampl": [8, 10], "ccle_sample_nod": 8, "d70b41b9": 8, "6f90": 8, "4714": 8, "8420": 8, "e043ab8b77b9": 8, "ccle_one_record": 8, "entir": 8, "schema": 8, "run": [8, 11], "introspect": 8, "regist": 8, "mark": 8, "open": [8, 10, 11], "mean": 8, "etc": 8, "max_tri": 8, "retri": 8, "fail": [8, 10], "chunk_siz": 8, "30": 8, "row_offset": 8, "spreadsheet": 8, "multipl": [8, 11], "csv": [8, 11, 12], "xlsx": 8, "worksheet": 8, "skip": 8, "data_spreadsheet": 8, "arrai": 8, "action": [9, 11], "These": 9, "broken": 9, "broad": 9, "categori": 9, "task": 9, "relat": 9, "persist": 9, "Such": 9, "mai": [9, 11], "involv": 9, "assign": 9, "everi": [9, 11], "alreadi": 9, "larg": 9, "most": 9, "util": 9, "capabl": 9, "make": [9, 11], "effici": 9, "main": 10, "datafil": 10, "manifest_1": 10, "my_common": 10, "org": 10, "gen3": [10, 11, 12], "my_credenti": 10, "howto": 10, "drsdownload": 10, "drs_download": 10, "download_list": 10, "show_progress": 10, "assist": 10, "minimum": 10, "interest": 10, "object_list": 10, "host": 10, "It": 10, "possibl": 10, "save_directori": 10, "unpack_packag": 10, "delete_unpacked_packag": 10, "directori": [10, 11], "call": [10, 13], "case": 10, "error": [10, 11, 12], "continu": 10, "save": 10, "show": 10, "bar": 10, "disabl": 10, "unpack": 10, "packag": 10, "after": 10, "them": [10, 11], "drs_hostnam": 10, "known": 10, "otherwis": 10, "success": 10, "resolv": 10, "permiss": 10, "wai": 10, "determin": [10, 11, 12], "reason": 10, "pend": 10, "objectid": 10, "datamanag": 10, "occur": 10, "attribut": [10, 11], "drsobjecttyp": 10, "unknown": 10, "factori": 10, "popul": [10, 12], "server": 10, "requir": 10, "byte": 10, "timestamp": 10, "last": 10, "g": 10, "child": 10, "bundl": 10, "self": 10, "indent": 10, "pretti": 10, "In": 10, "similar": 10, "linux": 10, "tree": 10, "command": [10, 11], "typic": 10, "discoveri": 10, "cach": 10, "files": 10, "static": 10, "bownload": 10, "successfulli": 10, "pars": [10, 11, 12, 13], "output_dir": 10, "conveni": 10, "infil": 10, "wrapper": 10, "cli": 10, "process": 11, "coroutin": 11, "asyncio": [11, 12], "librari": 11, "comma": 11, "header": 11, "download_manifest": 11, "per": [11, 12], "maximum": [11, 12], "desir": 11, "concurr": [11, 12], "across": 11, "thread": 11, "folder": 11, "place": 11, "temporari": 11, "write": 11, "safe": 11, "so": 11, "To": 11, "workaround": 11, "concat": 11, "output_filenam": [11, 12], "num_process": 11, "24": [11, 12], "input_manifest": 11, "python_subprocess_command": 11, "root": [11, 12], "domain": [11, 12], "live": [11, 12], "parallel": 11, "hit": 11, "total": 11, "help": 11, "everyth": 11, "attempt": 11, "By": 11, "someth": 11, "maco": 11, "x": 11, "python3": 11, "tab": 11, "session": 11, "column": [11, 12], "shown": 11, "below": 11, "255e396f": 11, "f1f8": 11, "11e9": 11, "9a07": 11, "0a80fada099c": 11, "473d83400bc1bc9dc635e334faddf33c": 11, "363455714": 11, "pdcdatastor": 11, "test1": 11, "0a80fada098c": 11, "473d83400bc1bc9dc635e334faddd33c": 11, "343434344": 11, "test2": 11, "0a80fada097c": 11, "473d83400bc1bc9dc635e334fadd433c": 11, "543434443": 11, "phs0001": 11, "phs0002": 11, "test3": 11, "0a80fada096c": 11, "test4": 11, "0a80fada010c": 11, "473d83400bc1bc9dc635e334fadde33c": 11, "test5": 11, "index_manifest": 11, "usag": 11, "py": 11, "giangb": 11, "planx": 11, "pla": 11, "net": 11, "manifest_fil": [11, 12], "path_to_manifest": 11, "replace_url": 11, "thread_num": 11, "api_kei": 11, "processed_fil": 11, "num_total_fil": 11, "synchron": 11, "warn": 11, "IF": 11, "know": 11, "THE": 11, "implic": 11, "manifest_file_delimit": [11, 12], "submit_additional_metadata_column": 11, "force_metadata_columns_even_if_empti": 11, "loop": 11, "password": [11, 12], "flag": 11, "replac": 11, "delimit": 11, "forc": 11, "creation": 11, "even": 11, "enabl": 11, "illustr": 11, "columna": 11, "columnb": 11, "columnc": 11, "dataa": 11, "datab": 11, "guid_exampl": 11, "md5_hash": 11, "fieldnam": 11, "There": 11, "those": 11, "abov": 11, "overrid": [11, 12], "assum": 11, "behavior": 11, "simpli": 11, "manifest_row_pars": [11, 12], "custom": 11, "import": 11, "verify_manifest": 11, "def": 11, "_get_authz_from_row": 11, "strip": 11, "parser": [11, 12], "verify_object_manifest": 11, "verif": 11, "error_nam": 11, "value_from_manifest": 11, "actual": 11, "value_from_indexd": 11, "93d9af72": 11, "b0f1": 11, "450c": 11, "a5c6": 11, "7d3d8d2083b4": 11, "dev": 11, "test": 11, "_get_acl_from_row": 11, "_get_file_name_from_row": 11, "_get_file_size_from_row": 11, "_get_guid_from_row": 11, "_get_md5_from_row": 11, "_get_urls_from_row": 11, "1692675811": [], "9771066": [], "indexd_field": [11, 12], "func_to_parse_row": [11, 12], "delimet": [11, 12], "metdata": 12, "ingest_manifest": 12, "NOT": 12, "guid_from_fil": 12, "_get_guid_for_row": 12, "indexed_file_object_guid": 12, "_query_for_associated_indexd_record_guid": 12, "guid_for_row": 12, "elsewher": 12, "metadata_sourc": 12, "1692675812": [], "3144128": [], "get_guid_from_fil": 12, "metadata_typ": 12, "dbgap": 12, "usual": 12, "fill": 12, "_guid_typ": 12, "is_indexed_file_object": 12, "lock": 12, "semaphor": 12, "semaphon": 12, "ammount": 12, "connect": 12, "wss": 13, "src_urlstr": 13, "dest_urlstr": 13, "appropri": 13, "src_w": 13, "src_wskei": 13, "dest_path": 13, "disk": 13, "w": 13, "wskei": 13, "ws_urlstr": 13, "form": 13, "src_path": 13, "dest_w": 13, "dest_wskei": 13, "1692676927": [], "2291234": [], "6143494": [], "1692716275": [], "1734753": [], "577429": [], "1692716527": [], "4222114": [], "9511294": [], "1692717039": [], "3338752": [], "744264": [], "1692741377": [], "0982177": [], "4559627": [], "1692743380": [], "4060478": [], "7860734": [], "1692743691": [], "983341": [], "1692743692": [], "4543839": [], "1692825679": [], "249731": [], "5510318": [], "1692886743": [], "381985": [], "8074749": [], "1693233058": [11, 12], "3038826": 11, "6020522": 12}, "objects": {"gen3.auth": [[0, 0, 1, "", "Gen3Auth"]], "gen3.auth.Gen3Auth": [[0, 1, 1, "", "curl"], [0, 1, 1, "", "get_access_token"], [0, 1, 1, "", "get_access_token_from_wts"], [0, 1, 1, "", "refresh_access_token"]], "gen3.file": [[1, 0, 1, "", "Gen3File"]], "gen3.file.Gen3File": [[1, 1, 1, "", "delete_file"], [1, 1, 1, "", "delete_file_locations"], [1, 1, 1, "", "download_single"], [1, 1, 1, "", "get_presigned_url"], [1, 1, 1, "", "upload_file"], [1, 1, 1, "", "upload_file_to_guid"]], "gen3.index": [[3, 0, 1, "", "Gen3Index"]], "gen3.index.Gen3Index": [[3, 1, 1, "", "async_create_record"], [3, 1, 1, "", "async_get_record"], [3, 1, 1, "", "async_get_records_from_checksum"], [3, 1, 1, "", "async_get_records_on_page"], [3, 1, 1, "", "async_get_with_params"], [3, 1, 1, "", "async_query_urls"], [3, 1, 1, "", "async_update_record"], [3, 1, 1, "", "create_blank"], [3, 1, 1, "", "create_new_version"], [3, 1, 1, "", "create_record"], [3, 1, 1, "", "delete_record"], [3, 1, 1, "", "get"], [3, 1, 1, "", "get_all_records"], [3, 1, 1, "", "get_guids_prefix"], [3, 1, 1, "", "get_latest_version"], [3, 1, 1, "", "get_record"], [3, 1, 1, "", "get_record_doc"], [3, 1, 1, "", "get_records"], [3, 1, 1, "", "get_records_on_page"], [3, 1, 1, "", "get_stats"], [3, 1, 1, "", "get_urls"], [3, 1, 1, "", "get_valid_guids"], [3, 1, 1, "", "get_version"], [3, 1, 1, "", "get_versions"], [3, 1, 1, "", "get_with_params"], [3, 1, 1, "", "is_healthy"], [3, 1, 1, "", "query_urls"], [3, 1, 1, "", "update_blank"], [3, 1, 1, "", "update_record"]], "gen3.jobs": [[4, 0, 1, "", "Gen3Jobs"]], "gen3.jobs.Gen3Jobs": [[4, 1, 1, "", "async_run_job_and_wait"], [4, 1, 1, "", "create_job"], [4, 1, 1, "", "get_output"], [4, 1, 1, "", "get_status"], [4, 1, 1, "", "get_version"], [4, 1, 1, "", "is_healthy"], [4, 1, 1, "", "list_jobs"]], "gen3.metadata": [[5, 0, 1, "", "Gen3Metadata"]], "gen3.metadata.Gen3Metadata": [[5, 1, 1, "", "async_create"], [5, 1, 1, "", "async_create_aliases"], [5, 1, 1, "", "async_delete_alias"], [5, 1, 1, "", "async_delete_aliases"], [5, 1, 1, "", "async_get"], [5, 1, 1, "", "async_get_aliases"], [5, 1, 1, "", "async_update"], [5, 1, 1, "", "async_update_aliases"], [5, 2, 1, "", "auth_provider"], [5, 1, 1, "", "batch_create"], [5, 1, 1, "", "create"], [5, 1, 1, "", "create_aliases"], [5, 1, 1, "", "create_index_key_path"], [5, 1, 1, "", "delete"], [5, 1, 1, "", "delete_alias"], [5, 1, 1, "", "delete_aliases"], [5, 1, 1, "", "delete_index_key_path"], [5, 2, 1, "", "endpoint"], [5, 1, 1, "", "get"], [5, 1, 1, "", "get_aliases"], [5, 1, 1, "", "get_index_key_paths"], [5, 1, 1, "", "get_version"], [5, 1, 1, "", "is_healthy"], [5, 1, 1, "", "query"], [5, 1, 1, "", "update"], [5, 1, 1, "", "update_aliases"]], "gen3.object": [[6, 0, 1, "", "Gen3Object"]], "gen3.object.Gen3Object": [[6, 1, 1, "", "delete_object"]], "gen3.query": [[7, 0, 1, "", "Gen3Query"]], "gen3.query.Gen3Query": [[7, 1, 1, "", "graphql_query"], [7, 1, 1, "", "query"], [7, 1, 1, "", "raw_data_download"]], "gen3.submission": [[8, 0, 1, "", "Gen3Submission"]], "gen3.submission.Gen3Submission": [[8, 1, 1, "", "create_program"], [8, 1, 1, "", "create_project"], [8, 1, 1, "", "delete_node"], [8, 1, 1, "", "delete_nodes"], [8, 1, 1, "", "delete_program"], [8, 1, 1, "", "delete_project"], [8, 1, 1, "", "delete_record"], [8, 1, 1, "", "delete_records"], [8, 1, 1, "", "export_node"], [8, 1, 1, "", "export_record"], [8, 1, 1, "", "get_dictionary_all"], [8, 1, 1, "", "get_dictionary_node"], [8, 1, 1, "", "get_graphql_schema"], [8, 1, 1, "", "get_programs"], [8, 1, 1, "", "get_project_dictionary"], [8, 1, 1, "", "get_project_manifest"], [8, 1, 1, "", "get_projects"], [8, 1, 1, "", "open_project"], [8, 1, 1, "", "query"], [8, 1, 1, "", "submit_file"], [8, 1, 1, "", "submit_record"]], "gen3": [[9, 3, 0, "-", "tools"]], "gen3.tools.download": [[10, 3, 0, "-", "drs_download"]], "gen3.tools.download.drs_download": [[10, 0, 1, "", "DownloadManager"], [10, 0, 1, "", "DownloadStatus"], [10, 0, 1, "", "Downloadable"], [10, 0, 1, "", "Manifest"], [10, 4, 1, "", "download_files_in_drs_manifest"], [10, 4, 1, "", "list_access_in_drs_manifest"], [10, 4, 1, "", "list_drs_object"], [10, 4, 1, "", "list_files_in_drs_manifest"]], "gen3.tools.download.drs_download.DownloadManager": [[10, 1, 1, "", "cache_hosts_wts_tokens"], [10, 1, 1, "", "download"], [10, 1, 1, "", "get_fresh_token"], [10, 1, 1, "", "resolve_objects"], [10, 1, 1, "", "user_access"]], "gen3.tools.download.drs_download.DownloadStatus": [[10, 2, 1, "", "end_time"], [10, 2, 1, "", "start_time"], [10, 2, 1, "", "status"]], "gen3.tools.download.drs_download.Downloadable": [[10, 2, 1, "", "_manager"], [10, 2, 1, "", "access_methods"], [10, 2, 1, "", "children"], [10, 2, 1, "", "created_time"], [10, 1, 1, "", "download"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 2, 1, "", "hostname"], [10, 2, 1, "", "object_id"], [10, 2, 1, "", "object_type"], [10, 1, 1, "", "pprint"], [10, 2, 1, "", "updated_time"]], "gen3.tools.download.drs_download.Manifest": [[10, 2, 1, "", "commons_url"], [10, 1, 1, "", "create_object_list"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 1, 1, "", "load"], [10, 1, 1, "", "load_manifest"], [10, 2, 1, "", "md5sum"], [10, 2, 1, "", "object_id"]], "gen3.tools.indexing": [[11, 3, 0, "-", "download_manifest"], [11, 3, 0, "-", "index_manifest"], [11, 3, 0, "-", "verify_manifest"]], "gen3.tools.indexing.download_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "INDEXD_RECORD_PAGE_SIZE"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 2, 1, "", "TMP_FOLDER"], [11, 4, 1, "", "async_download_object_manifest"]], "gen3.tools.indexing.index_manifest": [[11, 2, 1, "", "ACLS"], [11, 2, 1, "", "AUTHZ"], [11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "GUID"], [11, 2, 1, "", "MD5"], [11, 2, 1, "", "PREV_GUID"], [11, 2, 1, "", "SIZE"], [11, 0, 1, "", "ThreadControl"], [11, 2, 1, "", "URLS"], [11, 4, 1, "", "delete_all_guids"], [11, 4, 1, "", "index_object_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 4, 1, "", "async_verify_object_manifest"]], "gen3.tools.metadata": [[12, 3, 0, "-", "ingest_manifest"]], "gen3.tools.metadata.ingest_manifest": [[12, 2, 1, "", "COLUMN_TO_USE_AS_GUID"], [12, 2, 1, "", "GUID_TYPE_FOR_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [12, 4, 1, "", "async_ingest_metadata_manifest"], [12, 4, 1, "", "async_query_urls_from_indexd"]], "gen3.wss": [[13, 0, 1, "", "Gen3WsStorage"]], "gen3.wss.Gen3WsStorage": [[13, 1, 1, "", "copy"], [13, 1, 1, "", "download"], [13, 1, 1, "", "download_url"], [13, 1, 1, "", "ls"], [13, 1, 1, "", "ls_path"], [13, 1, 1, "", "rm"], [13, 1, 1, "", "rm_path"], [13, 1, 1, "", "upload"], [13, 1, 1, "", "upload_url"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:module", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "auth": 0, "helper": 0, "file": 1, "class": [1, 3, 4, 5, 6, 7, 8], "welcom": 2, "sdk": 2, "": 2, "document": 2, "indic": 2, "tabl": 2, "index": [3, 11], "job": 4, "metadata": [5, 12], "object": 6, "queri": 7, "submiss": 8, "tool": [9, 10, 11, 12], "dr": 10, "download": [10, 11], "verifi": 11, "ingest": 12, "workspac": 13, "storag": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Gen3 Auth Helper": [[0, "gen3-auth-helper"]], "Gen3 File Class": [[1, "gen3-file-class"]], "Welcome to Gen3 SDK\u2019s documentation!": [[2, "welcome-to-gen3-sdk-s-documentation"]], "Indices and tables": [[2, "indices-and-tables"]], "Gen3 Index Class": [[3, "gen3-index-class"]], "Gen3 Jobs Class": [[4, "gen3-jobs-class"]], "Gen3 Metadata Class": [[5, "gen3-metadata-class"]], "Gen3 Object Class": [[6, "gen3-object-class"]], "Gen3 Query Class": [[7, "gen3-query-class"]], "Gen3 Submission Class": [[8, "gen3-submission-class"]], "Gen3 Tools": [[9, "gen3-tools"]], "DRS Download Tools": [[10, "module-gen3.tools.download.drs_download"]], "Indexing Tools": [[11, "indexing-tools"]], "Download": [[11, "module-gen3.tools.indexing.download_manifest"]], "Index": [[11, "module-gen3.tools.indexing.index_manifest"]], "Verify": [[11, "module-gen3.tools.indexing.verify_manifest"]], "Metadata Tools": [[12, "metadata-tools"]], "Ingest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "Gen3 Workspace Storage": [[13, "gen3-workspace-storage"]]}, "indexentries": {"gen3auth (class in gen3.auth)": [[0, "gen3.auth.Gen3Auth"]], "curl() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.curl"]], "get_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token"]], "get_access_token_from_wts() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token_from_wts"]], "refresh_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.refresh_access_token"]], "gen3file (class in gen3.file)": [[1, "gen3.file.Gen3File"]], "delete_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file"]], "delete_file_locations() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file_locations"]], "download_single() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.download_single"]], "get_presigned_url() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.get_presigned_url"]], "upload_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file"]], "upload_file_to_guid() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file_to_guid"]], "gen3index (class in gen3.index)": [[3, "gen3.index.Gen3Index"]], "async_create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_create_record"]], "async_get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_record"]], "async_get_records_from_checksum() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_from_checksum"]], "async_get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_on_page"]], "async_get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_with_params"]], "async_query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_query_urls"]], "async_update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_update_record"]], "create_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_blank"]], "create_new_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_new_version"]], "create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_record"]], "delete_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.delete_record"]], "get() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get"]], "get_all_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_all_records"]], "get_guids_prefix() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_guids_prefix"]], "get_latest_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_latest_version"]], "get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record"]], "get_record_doc() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record_doc"]], "get_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records"]], "get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records_on_page"]], "get_stats() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_stats"]], "get_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_urls"]], "get_valid_guids() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_valid_guids"]], "get_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_version"]], "get_versions() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_versions"]], "get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_with_params"]], "is_healthy() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.is_healthy"]], "query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.query_urls"]], "update_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_blank"]], "update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_record"]], "gen3jobs (class in gen3.jobs)": [[4, "gen3.jobs.Gen3Jobs"]], "async_run_job_and_wait() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.async_run_job_and_wait"]], "create_job() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.create_job"]], "get_output() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_output"]], "get_status() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_status"]], "get_version() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_version"]], "is_healthy() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.is_healthy"]], "list_jobs() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.list_jobs"]], "gen3metadata (class in gen3.metadata)": [[5, "gen3.metadata.Gen3Metadata"]], "async_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create"]], "async_create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create_aliases"]], "async_delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_alias"]], "async_delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_aliases"]], "async_get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get"]], "async_get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get_aliases"]], "async_update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update"]], "async_update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update_aliases"]], "auth_provider (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.auth_provider"]], "batch_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.batch_create"]], "create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create"]], "create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_aliases"]], "create_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_index_key_path"]], "delete() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete"]], "delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_alias"]], "delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_aliases"]], "delete_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_index_key_path"]], "endpoint (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.endpoint"]], "get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get"]], "get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_aliases"]], "get_index_key_paths() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_index_key_paths"]], "get_version() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_version"]], "is_healthy() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.is_healthy"]], "query() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.query"]], "update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update"]], "update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update_aliases"]], "gen3object (class in gen3.object)": [[6, "gen3.object.Gen3Object"]], "delete_object() (gen3.object.gen3object method)": [[6, "gen3.object.Gen3Object.delete_object"]], "gen3query (class in gen3.query)": [[7, "gen3.query.Gen3Query"]], "graphql_query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.graphql_query"]], "query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.query"]], "raw_data_download() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.raw_data_download"]], "gen3submission (class in gen3.submission)": [[8, "gen3.submission.Gen3Submission"]], "create_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_program"]], "create_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_project"]], "delete_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_node"]], "delete_nodes() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_nodes"]], "delete_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_program"]], "delete_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_project"]], "delete_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_record"]], "delete_records() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_records"]], "export_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_node"]], "export_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_record"]], "get_dictionary_all() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_all"]], "get_dictionary_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_node"]], "get_graphql_schema() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_graphql_schema"]], "get_programs() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_programs"]], "get_project_dictionary() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_dictionary"]], "get_project_manifest() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_manifest"]], "get_projects() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_projects"]], "open_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.open_project"]], "query() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.query"]], "submit_file() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_file"]], "submit_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_record"]], "gen3.tools": [[9, "module-gen3.tools"]], "module": [[9, "module-gen3.tools"], [10, "module-gen3.tools.download.drs_download"], [11, "module-gen3.tools.indexing.download_manifest"], [11, "module-gen3.tools.indexing.index_manifest"], [11, "module-gen3.tools.indexing.verify_manifest"], [12, "module-gen3.tools.metadata.ingest_manifest"]], "downloadmanager (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadManager"]], "downloadstatus (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadStatus"]], "downloadable (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Downloadable"]], "manifest (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Manifest"]], "_manager (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable._manager"]], "access_methods (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.access_methods"]], "cache_hosts_wts_tokens() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.cache_hosts_wts_tokens"]], "children (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.children"]], "commons_url (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.commons_url"]], "create_object_list() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.create_object_list"]], "created_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.created_time"]], "download() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.download"]], "download() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.download"]], "download_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.download_files_in_drs_manifest"]], "end_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.end_time"]], "file_name (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_name"]], "file_name (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_name"]], "file_size (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_size"]], "file_size (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_size"]], "gen3.tools.download.drs_download": [[10, "module-gen3.tools.download.drs_download"]], "get_fresh_token() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.get_fresh_token"]], "hostname (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.hostname"]], "list_access_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_access_in_drs_manifest"]], "list_drs_object() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_drs_object"]], "list_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_files_in_drs_manifest"]], "load() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load"]], "load_manifest() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load_manifest"]], "md5sum (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.md5sum"]], "object_id (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_id"]], "object_id (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.object_id"]], "object_type (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_type"]], "pprint() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.pprint"]], "resolve_objects() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.resolve_objects"]], "start_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.start_time"]], "status (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.status"]], "updated_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.updated_time"]], "user_access() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.user_access"]], "acls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ACLS"]], "authz (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.AUTHZ"]], "current_dir (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.CURRENT_DIR"]], "guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.GUID"]], "indexd_record_page_size (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.INDEXD_RECORD_PAGE_SIZE"]], "max_concurrent_requests (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.MAX_CONCURRENT_REQUESTS"]], "max_concurrent_requests (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.MAX_CONCURRENT_REQUESTS"]], "md5 (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.MD5"]], "prev_guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.PREV_GUID"]], "size (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.SIZE"]], "tmp_folder (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.TMP_FOLDER"]], "threadcontrol (class in gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ThreadControl"]], "urls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.URLS"]], "async_download_object_manifest() (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.async_download_object_manifest"]], "async_verify_object_manifest() (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.async_verify_object_manifest"]], "delete_all_guids() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.delete_all_guids"]], "gen3.tools.indexing.download_manifest": [[11, "module-gen3.tools.indexing.download_manifest"]], "gen3.tools.indexing.index_manifest": [[11, "module-gen3.tools.indexing.index_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, "module-gen3.tools.indexing.verify_manifest"]], "index_object_manifest() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.index_object_manifest"]], "column_to_use_as_guid (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID"]], "guid_type_for_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_INDEXED_FILE_OBJECT"]], "guid_type_for_non_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"]], "max_concurrent_requests (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.MAX_CONCURRENT_REQUESTS"]], "async_ingest_metadata_manifest() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest"]], "async_query_urls_from_indexd() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_query_urls_from_indexd"]], "gen3.tools.metadata.ingest_manifest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "gen3wsstorage (class in gen3.wss)": [[13, "gen3.wss.Gen3WsStorage"]], "copy() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.copy"]], "download() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download"]], "download_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download_url"]], "ls() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls"]], "ls_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls_path"]], "rm() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm"]], "rm_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm_path"]], "upload() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload"]], "upload_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload_url"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["auth", "file", "index", "indexing", "jobs", "metadata", "object", "query", "submission", "tools", "tools/drs_pull", "tools/indexing", "tools/metadata", "wss"], "filenames": ["auth.rst", "file.rst", "index.rst", "indexing.rst", "jobs.rst", "metadata.rst", "object.rst", "query.rst", "submission.rst", "tools.rst", "tools/drs_pull.rst", "tools/indexing.rst", "tools/metadata.rst", "wss.rst"], "titles": ["Gen3 Auth Helper", "Gen3 File Class", "Welcome to Gen3 SDK\u2019s documentation!", "Gen3 Index Class", "Gen3 Jobs Class", "Gen3 Metadata Class", "Gen3 Object Class", "Gen3 Query Class", "Gen3 Submission Class", "Gen3 Tools", "DRS Download Tools", "Indexing Tools", "Metadata Tools", "Gen3 Workspace Storage"], "terms": {"class": [0, 2, 10, 11, 13], "gen3auth": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "endpoint": [0, 1, 2, 3, 4, 5, 7, 8, 13], "none": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "refresh_fil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "refresh_token": 0, "idp": 0, "client_credenti": 0, "client_scop": 0, "sourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "base": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "authbas": 0, "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "request": [0, 1, 3, 5, 8, 11, 12], "implement": 0, "order": [0, 8], "support": [0, 1, 5, 8, 11], "jwt": 0, "authent": 0, "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13], "access": [0, 1, 3, 7, 10], "token": [0, 10], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "provid": [0, 1, 3, 5, 7, 8, 12], "refresh": [0, 10], "file": [0, 2, 3, 4, 8, 9, 10, 11, 12, 13], "string": [0, 3, 5, 11, 13], "automat": 0, "when": [0, 3, 7, 10, 12], "thei": [0, 10], "expir": [0, 1], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "str": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12], "opt": 0, "The": [0, 1, 2, 3, 5, 8, 10, 11], "contain": [0, 2, 5, 8, 9, 10, 11, 12], "download": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "json": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "web": 0, "option": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "work": [0, 10], "workspac": [0, 2], "default": [0, 1, 3, 7, 8, 11, 12], "env": 0, "gen3_api_kei": 0, "credenti": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "set": [0, 1, 5, 10], "includ": [0, 3], "search": [0, 2, 3], "path": [0, 1, 5, 10, 11, 13], "valu": [0, 1, 3, 5, 7, 10, 11], "doe": [0, 12], "interpret": 0, "wt": [0, 10], "an": [0, 3, 6, 8, 10, 11], "accesstoken": 0, "If": [0, 1, 7, 11, 12], "can": [0, 3, 4, 8, 11, 12], "specifi": [0, 1, 3, 11, 13], "local": [0, 13], "indic": [0, 11], "environ": 0, "fenc": [0, 1], "tupl": [0, 3, 11, 12], "client_id": 0, "client_secret": 0, "oidc": 0, "client": [0, 3], "ha": [0, 11], "grant": 0, "allow": [0, 6, 8, 10, 11, 12], "obtain": [0, 10], "space": [0, 11], "separ": [0, 11], "list": [0, 1, 3, 4, 5, 7, 8, 10, 11, 13], "scope": [0, 1], "user": [0, 10, 12], "data": [0, 1, 3, 5, 7, 8, 10, 11], "openid": 0, "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "point": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "sandbox": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "common": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "while": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "profil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "page": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13], "instal": [0, 2, 11], "crdc": 0, "some": [0, 2], "arbitrari": 0, "kei": [0, 3, 5, 13], "variabl": [0, 7, 8], "rather": 0, "than": [0, 5], "pass": [0, 7, 8, 10], "argument": [0, 13], "constructor": 0, "id": [0, 1, 3, 5, 10, 11], "secret": 0, "note": [0, 3, 11, 12], "should": [0, 8, 11], "never": 0, "hardcod": 0, "http": [0, 7, 11, 12], "datacommon": 0, "o": 0, "gen3_oidc_client_creds_secret": 0, "initi": [0, 10], "follow": [0, 11], "curl": [0, 2], "given": [0, 3, 4, 5, 8, 10, 12, 13], "ex": [0, 11, 12], "return": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "respons": [0, 1, 3, 4, 5], "under": [0, 8, 13], "index": [0, 2, 5, 9], "authz": [0, 1, 2, 3, 9, 10, 11], "map": [0, 11], "get": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 13], "post": [0, 11], "put": 0, "delet": [0, 1, 2, 3, 5, 6, 8, 10, 11], "i": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12], "els": [0, 12], "filenam": [0, 8, 10, 11, 12], "get_access_token": [0, 2], "auto": [0, 2], "within": [0, 2, 9], "5": [0, 5], "minut": 0, "get_access_token_from_wt": [0, 2], "try": 0, "fetch": 0, "namespac": [0, 12], "refresh_access_token": [0, 2], "new": [0, 3], "gen3fil": [1, 2], "auth_provid": [1, 2, 3, 4, 5, 6, 7, 8, 13], "object": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13], "For": [1, 5, 6, 7, 8, 9, 11], "interact": [1, 3, 4, 5, 6, 8, 13], "manag": [1, 5, 10], "featur": [1, 6], "A": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "servic": [1, 3, 4, 5, 6, 8, 11, 12, 13], "presign": 1, "url": [1, 2, 3, 9, 10, 11, 12, 13], "right": 1, "now": [1, 8], "instanc": [1, 3, 6, 7, 8, 9, 10], "auth": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "delete_fil": [1, 2], "guid": [1, 2, 3, 5, 6, 9, 11, 12], "method": [1, 7, 10], "deprec": 1, "delete_file_loc": [1, 2, 6], "instead": [1, 7, 11], "all": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12], "locat": [1, 6], "store": [1, 3, 10], "remov": [1, 6, 11, 13], "its": [1, 3], "record": [1, 3, 5, 7, 8, 11, 12], "indexd": [1, 3, 6, 10, 11, 12], "uuid": [1, 3, 8], "text": [1, 7, 8], "result": [1, 8, 10, 11], "type": [1, 3, 4, 5, 7, 8, 10, 11, 12], "download_singl": [1, 2], "object_id": [1, 2, 9, 10], "singl": [1, 5, 8], "": [1, 4, 8, 10, 11], "uniqu": [1, 5], "get_presigned_url": [1, 2], "protocol": 1, "retriev": [1, 8, 10, 12], "give": 1, "limit": [1, 3, 5, 12], "time": [1, 8, 10, 11], "pick": 1, "avail": [1, 2, 10, 11], "queri": [1, 2, 3, 5, 8, 11, 12], "upload_fil": [1, 2], "file_nam": [1, 2, 3, 9, 10, 11], "expires_in": 1, "bucket": [1, 6], "upload": [1, 2, 3, 8, 13], "author": 1, "storag": [1, 2, 6], "s3": [1, 10, 11], "az": 1, "isn": 1, "t": [1, 5, 11], "int": [1, 3, 5, 7, 8, 10, 11, 12], "amount": [1, 9], "second": [1, 4], "sign": 1, "datetim": [1, 10], "utcnow": 1, "Be": 1, "sure": 1, "posit": [1, 7], "integ": [1, 3, 8], "also": 1, "treat": [1, 5], "max_presigned_url_ttl": 1, "configur": 1, "must": [1, 5], "allowed_data_upload_bucket": 1, "data_upload_bucket": 1, "represent": [1, 3], "document": [1, 3], "upload_file_to_guid": [1, 2], "exist": [1, 3, 5, 6, 9, 12], "readm": 2, "python": [2, 9, 11], "github": [2, 7], "repo": 2, "setup": 2, "inform": [2, 3, 10], "along": 2, "quickstart": 2, "script": 2, "more": [2, 5, 7, 9, 10], "detail": [2, 7, 10], "about": [2, 3], "variou": 2, "function": [2, 3, 4, 5, 9, 10, 11, 12], "mostli": 2, "docstr": 2, "code": [2, 8], "helper": 2, "gen3index": [2, 3], "async_create_record": [2, 3], "async_get_record": [2, 3], "async_get_records_from_checksum": [2, 3], "async_get_records_on_pag": [2, 3], "async_get_with_param": [2, 3], "async_query_url": [2, 3], "async_update_record": [2, 3], "create_blank": [2, 3], "create_new_vers": [2, 3], "create_record": [2, 3], "delete_record": [2, 3, 8], "get_all_record": [2, 3], "get_guids_prefix": [2, 3], "get_latest_vers": [2, 3], "get_record": [2, 3], "get_record_doc": [2, 3], "get_records_on_pag": [2, 3], "get_stat": [2, 3], "get_url": [2, 3], "get_valid_guid": [2, 3], "get_vers": [2, 3, 4, 5], "get_with_param": [2, 3], "is_healthi": [2, 3, 4, 5], "query_url": [2, 3], "update_blank": [2, 3], "update_record": [2, 3], "job": 2, "gen3job": [2, 4, 10], "async_run_job_and_wait": [2, 4], "create_job": [2, 4], "get_output": [2, 4], "get_statu": [2, 4], "list_job": [2, 4], "metadata": [2, 3, 6, 9, 11], "gen3metadata": [2, 5], "async_cr": [2, 5], "async_create_alias": [2, 5], "async_delete_alia": [2, 5], "async_delete_alias": [2, 5], "async_get": [2, 5], "async_get_alias": [2, 5], "async_upd": [2, 5], "async_update_alias": [2, 5], "batch_creat": [2, 5], "creat": [2, 3, 4, 5, 6, 8, 10, 11], "create_alias": [2, 5], "create_index_key_path": [2, 5], "delete_alia": [2, 5], "delete_alias": [2, 5], "delete_index_key_path": [2, 5], "get_alias": [2, 5], "get_index_key_path": [2, 5], "updat": [2, 3, 5, 10, 11], "update_alias": [2, 5], "gen3object": [2, 6], "delete_object": [2, 6], "gen3queri": [2, 7], "graphql_queri": [2, 7], "raw_data_download": [2, 7], "submiss": 2, "gen3submiss": [2, 8], "create_program": [2, 8], "create_project": [2, 8], "delete_nod": [2, 8], "delete_program": [2, 8], "delete_project": [2, 8], "export_nod": [2, 8], "export_record": [2, 8], "get_dictionary_al": [2, 8], "get_dictionary_nod": [2, 8], "get_graphql_schema": [2, 8], "get_program": [2, 8], "get_project_dictionari": [2, 8], "get_project_manifest": [2, 8], "get_project": [2, 8], "open_project": [2, 8], "submit_fil": [2, 8], "submit_record": [2, 8], "tool": 2, "dr": [2, 9], "downloadmanag": [2, 9, 10], "cache_hosts_wts_token": [2, 9, 10], "get_fresh_token": [2, 9, 10], "resolve_object": [2, 9, 10], "user_access": [2, 9, 10], "downloadstatu": [2, 9, 10], "statu": [2, 4, 9, 10], "start_tim": [2, 9, 10], "end_tim": [2, 9, 10], "object_typ": [2, 9, 10], "hostnam": [2, 9, 10], "file_s": [2, 9, 10, 11], "updated_tim": [2, 9, 10], "created_tim": [2, 9, 10], "access_method": [2, 9, 10], "children": [2, 9, 10], "_manag": [2, 9, 10], "pprint": [2, 9, 10], "manifest": [2, 8, 9, 10, 11, 12], "md5sum": [2, 9, 10], "commons_url": [2, 9, 10, 11, 12], "create_object_list": [2, 9, 10], "load": [2, 9, 10], "load_manifest": [2, 9, 10], "download_drs_object": [], "download_files_in_drs_manifest": [2, 9, 10], "list_access_in_drs_manifest": [2, 9, 10], "list_drs_object": [2, 9, 10], "list_files_in_drs_manifest": [2, 9, 10], "current_dir": [2, 9, 11], "indexd_record_page_s": [2, 9, 11], "max_concurrent_request": [2, 9, 11, 12], "tmp_folder": [2, 9, 11], "async_download_object_manifest": [2, 9, 11], "size": [2, 3, 9, 10, 11], "md5": [2, 3, 9, 11], "acl": [2, 3, 9, 11], "prev_guid": [2, 9, 11], "threadcontrol": [2, 9, 11], "delete_all_guid": [2, 9, 11], "index_object_manifest": [2, 9, 11], "verifi": [2, 9], "async_verify_object_manifest": [2, 9, 11], "ingest": [2, 9], "column_to_use_as_guid": [2, 9, 12], "guid_type_for_indexed_file_object": [2, 9, 12], "guid_type_for_non_indexed_file_object": [2, 9, 12], "async_ingest_metadata_manifest": [2, 9, 12], "async_query_urls_from_indexd": [2, 9, 12], "gen3wsstorag": [2, 13], "copi": [2, 13], "download_url": [2, 13], "l": [2, 13], "ls_path": [2, 13], "rm": [2, 13], "rm_path": [2, 13], "upload_url": [2, 13], "modul": [2, 10, 11], "service_loc": [3, 4, 5], "public": [3, 5], "read": [3, 5, 11], "onli": [3, 5, 7, 8, 10, 11], "necessari": [3, 5], "basic": [3, 11, 12], "cred": 3, "async": [3, 4, 5, 9, 11, 12], "hash": [3, 11], "did": 3, "baseid": 3, "urls_metadata": 3, "version": [3, 4, 5], "_ssl": [3, 4, 5], "asynchron": [3, 4, 5], "dict": [3, 4, 5, 10, 11, 12], "eg": 3, "ab167e49d25b488939b1ede42752458b": 3, "associ": [3, 5], "made": 3, "where": [3, 5, 11, 12], "you": [3, 8, 11], "control": 3, "rbac": 3, "name": [3, 4, 8, 10, 11, 12, 13], "addit": [3, 5, 10, 11], "entri": [3, 11], "attach": [3, 5], "each": [3, 8, 10, 11], "group": 3, "previou": [3, 11], "checksum": [3, 10], "checksum_typ": 3, "match": [3, 5, 12], "param": [3, 5, 8, 10], "correspond": 3, "suppli": 3, "need": [3, 7, 10, 11], "handl": [3, 10], "hash_typ": 3, "whether": [3, 4, 5, 8, 11, 12], "ssl": [3, 4, 5], "pattern": [3, 12], "against": [3, 7, 8, 11, 12], "kwarg": [3, 4, 5], "bodi": 3, "dictionari": [3, 4, 5, 7, 8], "format": [3, 5, 8, 11], "blank": 3, "add": [3, 5], "sinc": 3, "content": [3, 13], "immut": 3, "want": [3, 8], "chang": [3, 11], "That": 3, "field": [3, 5, 7, 11, 12], "old": 3, "ad": 3, "least": 3, "one": [3, 5, 10, 11], "suffici": 3, "good": 3, "idea": 3, "number": [3, 7, 8, 11, 12], "noth": [3, 6], "dist_resolut": 3, "true": [3, 4, 5, 6, 7, 8, 10, 11, 12], "alia": [3, 5], "distribut": 3, "identifi": [3, 5, 9, 11], "boolean": 3, "we": [3, 11], "pagin": 3, "fals": [3, 5, 6, 10, 11], "start": [3, 4, 7, 8, 10], "prefix": 3, "rtype": 3, "has_vers": 3, "latest": 3, "exclud": 3, "without": [3, 5], "repres": [3, 5, 10], "info": [3, 11], "algorithm": 3, "count": 3, "valid": [3, 7], "file_st": 3, "like": [3, 5, 9, 11, 12], "signpost": 3, "healthi": [3, 4, 5], "rev": 3, "revis": 3, "simpl": 3, "consist": 3, "mechan": 3, "dispatch": 4, "job_nam": 4, "job_input": 4, "wait": 4, "output": [4, 5, 11, 12], "Will": [4, 7, 10], "sleep": 4, "linear": 4, "delai": 4, "until": [4, 10], "done": 4, "1": [4, 5, 8, 10, 11], "global": [4, 5], "input": [4, 10, 11], "job_id": 4, "previous": 4, "complet": [4, 11], "bool": [4, 5, 8, 10, 11, 12], "md": [5, 7, 10, 12], "admin_endpoint_suffix": 5, "admin": [5, 11], "alias": 5, "overwrit": 5, "what": 5, "end": [5, 10], "up": [5, 9], "blob": [5, 7], "asyncron": 5, "altern": [5, 11], "merg": 5, "AND": 5, "descript": 5, "metadata_list": 5, "specif": [5, 8, 11, 12], "expect": [5, 9, 11], "anoth": 5, "databas": 5, "return_full_metadata": 5, "10": [5, 7, 11], "offset": [5, 7], "0": [5, 7, 8, 11], "use_agg_md": 5, "off": 5, "logic": [5, 12], "filter": [5, 7], "b": [5, 11], "2": [5, 11], "have": [5, 11], "ar": [5, 7, 8, 9, 10, 11], "alwai": 5, "nest": 5, "c": [5, 11], "3": [5, 11], "same": [5, 11, 13], "whose": 5, "ani": [5, 10, 11], "But": 5, "differ": 5, "33": 5, "d": 5, "4": [5, 11], "e": [5, 10], "won": 5, "333": 5, "defin": [5, 8, 10], "api": [5, 8, 11], "just": [5, 11, 12], "max": 5, "num": 5, "OR": 5, "level": 6, "current": [6, 8, 10], "system": [6, 7, 8, 9], "elasticsearch": 7, "query_str": 7, "execut": [7, 8, 11], "graphql": [7, 8], "query_txt": [7, 8], "syntax": 7, "see": [7, 10, 11], "com": 7, "uc": 7, "cdi": 7, "guppi": 7, "master": 7, "doc": [7, 10], "data_typ": 7, "my_index": 7, "my_field": 7, "first": [7, 8], "filter_object": 7, "sort_object": 7, "verbos": [7, 8], "row": [7, 8, 11, 12], "sort": 7, "equal": 7, "respect": 7, "complex": 7, "appli": 7, "One": 7, "unaccess": 7, "regular": 7, "tier": 7, "mode": 7, "subject": [7, 8], "50": 7, "vital_statu": 7, "submitter_id": 7, "aliv": 7, "asc": 7, "sort_field": 7, "raw": [7, 11], "project_id": [7, 8], "my_program": 7, "my_project": 7, "submit": [8, 11], "export": [8, 10], "sheepdog": 8, "through": [8, 11], "peregrin": 8, "sub": 8, "program": [8, 11], "project": [8, 11], "dcf": 8, "node_nam": 8, "batch_siz": 8, "100": [8, 11], "node": 8, "how": [8, 11], "mani": [8, 11], "print": [8, 10], "progress": [8, 10], "log": [8, 10, 11, 12], "ccle": 8, "demograph": 8, "ordered_node_list": 8, "revers": 8, "graph": 8, "experi": 8, "empti": [8, 11], "uuid1": 8, "uuid2": 8, "node_typ": 8, "fileformat": 8, "which": [8, 10], "belong": 8, "either": 8, "tsv": [8, 11, 12], "screen": 8, "sampl": [8, 10], "ccle_sample_nod": 8, "d70b41b9": 8, "6f90": 8, "4714": 8, "8420": 8, "e043ab8b77b9": 8, "ccle_one_record": 8, "entir": 8, "schema": 8, "run": [8, 11], "introspect": 8, "regist": 8, "mark": 8, "open": [8, 10, 11], "mean": 8, "etc": 8, "max_tri": 8, "retri": 8, "fail": [8, 10], "chunk_siz": 8, "30": 8, "row_offset": 8, "spreadsheet": 8, "multipl": [8, 11], "csv": [8, 11, 12], "xlsx": 8, "worksheet": 8, "skip": 8, "data_spreadsheet": 8, "arrai": 8, "action": [9, 11], "These": 9, "broken": 9, "broad": 9, "categori": 9, "task": 9, "relat": 9, "persist": 9, "Such": 9, "mai": [9, 11], "involv": 9, "assign": 9, "everi": [9, 11], "alreadi": 9, "larg": 9, "most": 9, "util": 9, "capabl": 9, "make": [9, 11], "effici": 9, "main": 10, "datafil": 10, "manifest_1": 10, "my_common": 10, "org": 10, "gen3": [10, 11, 12], "my_credenti": 10, "howto": 10, "drsdownload": 10, "drs_download": 10, "download_list": 10, "show_progress": 10, "assist": 10, "minimum": 10, "interest": 10, "object_list": 10, "host": 10, "It": 10, "possibl": 10, "save_directori": 10, "unpack_packag": 10, "delete_unpacked_packag": 10, "directori": [10, 11], "call": [10, 13], "case": 10, "error": [10, 11, 12], "continu": 10, "save": 10, "show": 10, "bar": 10, "disabl": 10, "unpack": 10, "packag": 10, "after": 10, "them": [10, 11], "drs_hostnam": 10, "known": 10, "otherwis": 10, "success": 10, "resolv": 10, "permiss": 10, "wai": 10, "determin": [10, 11, 12], "reason": 10, "pend": 10, "objectid": 10, "datamanag": 10, "occur": 10, "attribut": [10, 11], "drsobjecttyp": 10, "unknown": 10, "factori": 10, "popul": [10, 12], "server": 10, "requir": 10, "byte": 10, "timestamp": 10, "last": 10, "g": 10, "child": 10, "bundl": 10, "self": 10, "indent": 10, "pretti": 10, "In": 10, "similar": 10, "linux": 10, "tree": 10, "command": [10, 11], "typic": 10, "discoveri": 10, "cach": 10, "files": 10, "static": 10, "bownload": 10, "successfulli": 10, "pars": [10, 11, 12, 13], "output_dir": 10, "conveni": 10, "infil": 10, "wrapper": 10, "cli": 10, "process": 11, "coroutin": 11, "asyncio": [11, 12], "librari": 11, "comma": 11, "header": 11, "download_manifest": 11, "per": [11, 12], "maximum": [11, 12], "desir": 11, "concurr": [11, 12], "across": 11, "thread": 11, "folder": 11, "place": 11, "temporari": 11, "write": 11, "safe": 11, "so": 11, "To": 11, "workaround": 11, "concat": 11, "output_filenam": [11, 12], "num_process": 11, "24": [11, 12], "input_manifest": 11, "python_subprocess_command": 11, "root": [11, 12], "domain": [11, 12], "live": [11, 12], "parallel": 11, "hit": 11, "total": 11, "help": 11, "everyth": 11, "attempt": 11, "By": 11, "someth": 11, "maco": 11, "x": 11, "python3": 11, "tab": 11, "session": 11, "column": [11, 12], "shown": 11, "below": 11, "255e396f": 11, "f1f8": 11, "11e9": 11, "9a07": 11, "0a80fada099c": 11, "473d83400bc1bc9dc635e334faddf33c": 11, "363455714": 11, "pdcdatastor": 11, "test1": 11, "0a80fada098c": 11, "473d83400bc1bc9dc635e334faddd33c": 11, "343434344": 11, "test2": 11, "0a80fada097c": 11, "473d83400bc1bc9dc635e334fadd433c": 11, "543434443": 11, "phs0001": 11, "phs0002": 11, "test3": 11, "0a80fada096c": 11, "test4": 11, "0a80fada010c": 11, "473d83400bc1bc9dc635e334fadde33c": 11, "test5": 11, "index_manifest": 11, "usag": 11, "py": 11, "giangb": 11, "planx": 11, "pla": 11, "net": 11, "manifest_fil": [11, 12], "path_to_manifest": 11, "replace_url": 11, "thread_num": 11, "api_kei": 11, "processed_fil": 11, "num_total_fil": 11, "synchron": 11, "warn": 11, "IF": 11, "know": 11, "THE": 11, "implic": 11, "manifest_file_delimit": [11, 12], "submit_additional_metadata_column": 11, "force_metadata_columns_even_if_empti": 11, "loop": 11, "password": [11, 12], "flag": 11, "replac": 11, "delimit": 11, "forc": 11, "creation": 11, "even": 11, "enabl": 11, "illustr": 11, "columna": 11, "columnb": 11, "columnc": 11, "dataa": 11, "datab": 11, "guid_exampl": 11, "md5_hash": 11, "fieldnam": 11, "There": 11, "those": 11, "abov": 11, "overrid": [11, 12], "assum": 11, "behavior": 11, "simpli": 11, "manifest_row_pars": [11, 12], "custom": 11, "import": 11, "verify_manifest": 11, "def": 11, "_get_authz_from_row": 11, "strip": 11, "parser": [11, 12], "verify_object_manifest": 11, "verif": 11, "error_nam": 11, "value_from_manifest": 11, "actual": 11, "value_from_indexd": 11, "93d9af72": 11, "b0f1": 11, "450c": 11, "a5c6": 11, "7d3d8d2083b4": 11, "dev": 11, "test": 11, "_get_acl_from_row": 11, "_get_file_name_from_row": 11, "_get_file_size_from_row": 11, "_get_guid_from_row": 11, "_get_md5_from_row": 11, "_get_urls_from_row": 11, "1692675811": [], "9771066": [], "indexd_field": [11, 12], "func_to_parse_row": [11, 12], "delimet": [11, 12], "metdata": 12, "ingest_manifest": 12, "NOT": 12, "guid_from_fil": 12, "_get_guid_for_row": 12, "indexed_file_object_guid": 12, "_query_for_associated_indexd_record_guid": 12, "guid_for_row": 12, "elsewher": 12, "metadata_sourc": 12, "1692675812": [], "3144128": [], "get_guid_from_fil": 12, "metadata_typ": 12, "dbgap": 12, "usual": 12, "fill": 12, "_guid_typ": 12, "is_indexed_file_object": 12, "lock": 12, "semaphor": 12, "semaphon": 12, "ammount": 12, "connect": 12, "wss": 13, "src_urlstr": 13, "dest_urlstr": 13, "appropri": 13, "src_w": 13, "src_wskei": 13, "dest_path": 13, "disk": 13, "w": 13, "wskei": 13, "ws_urlstr": 13, "form": 13, "src_path": 13, "dest_w": 13, "dest_wskei": 13, "1692676927": [], "2291234": [], "6143494": [], "1692716275": [], "1734753": [], "577429": [], "1692716527": [], "4222114": [], "9511294": [], "1692717039": [], "3338752": [], "744264": [], "1692741377": [], "0982177": [], "4559627": [], "1692743380": [], "4060478": [], "7860734": [], "1692743691": [], "983341": [], "1692743692": [], "4543839": [], "1692825679": [], "249731": [], "5510318": [], "1692886743": [11, 12], "381985": 11, "8074749": 12}, "objects": {"gen3.auth": [[0, 0, 1, "", "Gen3Auth"]], "gen3.auth.Gen3Auth": [[0, 1, 1, "", "curl"], [0, 1, 1, "", "get_access_token"], [0, 1, 1, "", "get_access_token_from_wts"], [0, 1, 1, "", "refresh_access_token"]], "gen3.file": [[1, 0, 1, "", "Gen3File"]], "gen3.file.Gen3File": [[1, 1, 1, "", "delete_file"], [1, 1, 1, "", "delete_file_locations"], [1, 1, 1, "", "download_single"], [1, 1, 1, "", "get_presigned_url"], [1, 1, 1, "", "upload_file"], [1, 1, 1, "", "upload_file_to_guid"]], "gen3.index": [[3, 0, 1, "", "Gen3Index"]], "gen3.index.Gen3Index": [[3, 1, 1, "", "async_create_record"], [3, 1, 1, "", "async_get_record"], [3, 1, 1, "", "async_get_records_from_checksum"], [3, 1, 1, "", "async_get_records_on_page"], [3, 1, 1, "", "async_get_with_params"], [3, 1, 1, "", "async_query_urls"], [3, 1, 1, "", "async_update_record"], [3, 1, 1, "", "create_blank"], [3, 1, 1, "", "create_new_version"], [3, 1, 1, "", "create_record"], [3, 1, 1, "", "delete_record"], [3, 1, 1, "", "get"], [3, 1, 1, "", "get_all_records"], [3, 1, 1, "", "get_guids_prefix"], [3, 1, 1, "", "get_latest_version"], [3, 1, 1, "", "get_record"], [3, 1, 1, "", "get_record_doc"], [3, 1, 1, "", "get_records"], [3, 1, 1, "", "get_records_on_page"], [3, 1, 1, "", "get_stats"], [3, 1, 1, "", "get_urls"], [3, 1, 1, "", "get_valid_guids"], [3, 1, 1, "", "get_version"], [3, 1, 1, "", "get_versions"], [3, 1, 1, "", "get_with_params"], [3, 1, 1, "", "is_healthy"], [3, 1, 1, "", "query_urls"], [3, 1, 1, "", "update_blank"], [3, 1, 1, "", "update_record"]], "gen3.jobs": [[4, 0, 1, "", "Gen3Jobs"]], "gen3.jobs.Gen3Jobs": [[4, 1, 1, "", "async_run_job_and_wait"], [4, 1, 1, "", "create_job"], [4, 1, 1, "", "get_output"], [4, 1, 1, "", "get_status"], [4, 1, 1, "", "get_version"], [4, 1, 1, "", "is_healthy"], [4, 1, 1, "", "list_jobs"]], "gen3.metadata": [[5, 0, 1, "", "Gen3Metadata"]], "gen3.metadata.Gen3Metadata": [[5, 1, 1, "", "async_create"], [5, 1, 1, "", "async_create_aliases"], [5, 1, 1, "", "async_delete_alias"], [5, 1, 1, "", "async_delete_aliases"], [5, 1, 1, "", "async_get"], [5, 1, 1, "", "async_get_aliases"], [5, 1, 1, "", "async_update"], [5, 1, 1, "", "async_update_aliases"], [5, 2, 1, "", "auth_provider"], [5, 1, 1, "", "batch_create"], [5, 1, 1, "", "create"], [5, 1, 1, "", "create_aliases"], [5, 1, 1, "", "create_index_key_path"], [5, 1, 1, "", "delete"], [5, 1, 1, "", "delete_alias"], [5, 1, 1, "", "delete_aliases"], [5, 1, 1, "", "delete_index_key_path"], [5, 2, 1, "", "endpoint"], [5, 1, 1, "", "get"], [5, 1, 1, "", "get_aliases"], [5, 1, 1, "", "get_index_key_paths"], [5, 1, 1, "", "get_version"], [5, 1, 1, "", "is_healthy"], [5, 1, 1, "", "query"], [5, 1, 1, "", "update"], [5, 1, 1, "", "update_aliases"]], "gen3.object": [[6, 0, 1, "", "Gen3Object"]], "gen3.object.Gen3Object": [[6, 1, 1, "", "delete_object"]], "gen3.query": [[7, 0, 1, "", "Gen3Query"]], "gen3.query.Gen3Query": [[7, 1, 1, "", "graphql_query"], [7, 1, 1, "", "query"], [7, 1, 1, "", "raw_data_download"]], "gen3.submission": [[8, 0, 1, "", "Gen3Submission"]], "gen3.submission.Gen3Submission": [[8, 1, 1, "", "create_program"], [8, 1, 1, "", "create_project"], [8, 1, 1, "", "delete_node"], [8, 1, 1, "", "delete_nodes"], [8, 1, 1, "", "delete_program"], [8, 1, 1, "", "delete_project"], [8, 1, 1, "", "delete_record"], [8, 1, 1, "", "delete_records"], [8, 1, 1, "", "export_node"], [8, 1, 1, "", "export_record"], [8, 1, 1, "", "get_dictionary_all"], [8, 1, 1, "", "get_dictionary_node"], [8, 1, 1, "", "get_graphql_schema"], [8, 1, 1, "", "get_programs"], [8, 1, 1, "", "get_project_dictionary"], [8, 1, 1, "", "get_project_manifest"], [8, 1, 1, "", "get_projects"], [8, 1, 1, "", "open_project"], [8, 1, 1, "", "query"], [8, 1, 1, "", "submit_file"], [8, 1, 1, "", "submit_record"]], "gen3": [[9, 3, 0, "-", "tools"]], "gen3.tools.download": [[10, 3, 0, "-", "drs_download"]], "gen3.tools.download.drs_download": [[10, 0, 1, "", "DownloadManager"], [10, 0, 1, "", "DownloadStatus"], [10, 0, 1, "", "Downloadable"], [10, 0, 1, "", "Manifest"], [10, 4, 1, "", "download_files_in_drs_manifest"], [10, 4, 1, "", "list_access_in_drs_manifest"], [10, 4, 1, "", "list_drs_object"], [10, 4, 1, "", "list_files_in_drs_manifest"]], "gen3.tools.download.drs_download.DownloadManager": [[10, 1, 1, "", "cache_hosts_wts_tokens"], [10, 1, 1, "", "download"], [10, 1, 1, "", "get_fresh_token"], [10, 1, 1, "", "resolve_objects"], [10, 1, 1, "", "user_access"]], "gen3.tools.download.drs_download.DownloadStatus": [[10, 2, 1, "", "end_time"], [10, 2, 1, "", "start_time"], [10, 2, 1, "", "status"]], "gen3.tools.download.drs_download.Downloadable": [[10, 2, 1, "", "_manager"], [10, 2, 1, "", "access_methods"], [10, 2, 1, "", "children"], [10, 2, 1, "", "created_time"], [10, 1, 1, "", "download"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 2, 1, "", "hostname"], [10, 2, 1, "", "object_id"], [10, 2, 1, "", "object_type"], [10, 1, 1, "", "pprint"], [10, 2, 1, "", "updated_time"]], "gen3.tools.download.drs_download.Manifest": [[10, 2, 1, "", "commons_url"], [10, 1, 1, "", "create_object_list"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 1, 1, "", "load"], [10, 1, 1, "", "load_manifest"], [10, 2, 1, "", "md5sum"], [10, 2, 1, "", "object_id"]], "gen3.tools.indexing": [[11, 3, 0, "-", "download_manifest"], [11, 3, 0, "-", "index_manifest"], [11, 3, 0, "-", "verify_manifest"]], "gen3.tools.indexing.download_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "INDEXD_RECORD_PAGE_SIZE"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 2, 1, "", "TMP_FOLDER"], [11, 4, 1, "", "async_download_object_manifest"]], "gen3.tools.indexing.index_manifest": [[11, 2, 1, "", "ACLS"], [11, 2, 1, "", "AUTHZ"], [11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "GUID"], [11, 2, 1, "", "MD5"], [11, 2, 1, "", "PREV_GUID"], [11, 2, 1, "", "SIZE"], [11, 0, 1, "", "ThreadControl"], [11, 2, 1, "", "URLS"], [11, 4, 1, "", "delete_all_guids"], [11, 4, 1, "", "index_object_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 4, 1, "", "async_verify_object_manifest"]], "gen3.tools.metadata": [[12, 3, 0, "-", "ingest_manifest"]], "gen3.tools.metadata.ingest_manifest": [[12, 2, 1, "", "COLUMN_TO_USE_AS_GUID"], [12, 2, 1, "", "GUID_TYPE_FOR_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [12, 4, 1, "", "async_ingest_metadata_manifest"], [12, 4, 1, "", "async_query_urls_from_indexd"]], "gen3.wss": [[13, 0, 1, "", "Gen3WsStorage"]], "gen3.wss.Gen3WsStorage": [[13, 1, 1, "", "copy"], [13, 1, 1, "", "download"], [13, 1, 1, "", "download_url"], [13, 1, 1, "", "ls"], [13, 1, 1, "", "ls_path"], [13, 1, 1, "", "rm"], [13, 1, 1, "", "rm_path"], [13, 1, 1, "", "upload"], [13, 1, 1, "", "upload_url"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:module", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "auth": 0, "helper": 0, "file": 1, "class": [1, 3, 4, 5, 6, 7, 8], "welcom": 2, "sdk": 2, "": 2, "document": 2, "indic": 2, "tabl": 2, "index": [3, 11], "job": 4, "metadata": [5, 12], "object": 6, "queri": 7, "submiss": 8, "tool": [9, 10, 11, 12], "dr": 10, "download": [10, 11], "verifi": 11, "ingest": 12, "workspac": 13, "storag": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Gen3 Auth Helper": [[0, "gen3-auth-helper"]], "Gen3 File Class": [[1, "gen3-file-class"]], "Welcome to Gen3 SDK\u2019s documentation!": [[2, "welcome-to-gen3-sdk-s-documentation"]], "Indices and tables": [[2, "indices-and-tables"]], "Gen3 Index Class": [[3, "gen3-index-class"]], "Gen3 Jobs Class": [[4, "gen3-jobs-class"]], "Gen3 Metadata Class": [[5, "gen3-metadata-class"]], "Gen3 Object Class": [[6, "gen3-object-class"]], "Gen3 Query Class": [[7, "gen3-query-class"]], "Gen3 Submission Class": [[8, "gen3-submission-class"]], "Gen3 Tools": [[9, "gen3-tools"]], "DRS Download Tools": [[10, "drs-download-tools"]], "Indexing Tools": [[11, "indexing-tools"]], "Download": [[11, "download"]], "Index": [[11, "index"]], "Verify": [[11, "verify"]], "Metadata Tools": [[12, "metadata-tools"]], "Ingest": [[12, "ingest"]], "Gen3 Workspace Storage": [[13, "gen3-workspace-storage"]]}, "indexentries": {"gen3auth (class in gen3.auth)": [[0, "gen3.auth.Gen3Auth"]], "curl() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.curl"]], "get_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token"]], "get_access_token_from_wts() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token_from_wts"]], "refresh_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.refresh_access_token"]], "gen3file (class in gen3.file)": [[1, "gen3.file.Gen3File"]], "delete_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file"]], "delete_file_locations() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file_locations"]], "download_single() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.download_single"]], "get_presigned_url() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.get_presigned_url"]], "upload_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file"]], "upload_file_to_guid() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file_to_guid"]], "gen3index (class in gen3.index)": [[3, "gen3.index.Gen3Index"]], "async_create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_create_record"]], "async_get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_record"]], "async_get_records_from_checksum() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_from_checksum"]], "async_get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_on_page"]], "async_get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_with_params"]], "async_query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_query_urls"]], "async_update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_update_record"]], "create_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_blank"]], "create_new_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_new_version"]], "create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_record"]], "delete_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.delete_record"]], "get() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get"]], "get_all_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_all_records"]], "get_guids_prefix() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_guids_prefix"]], "get_latest_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_latest_version"]], "get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record"]], "get_record_doc() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record_doc"]], "get_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records"]], "get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records_on_page"]], "get_stats() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_stats"]], "get_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_urls"]], "get_valid_guids() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_valid_guids"]], "get_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_version"]], "get_versions() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_versions"]], "get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_with_params"]], "is_healthy() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.is_healthy"]], "query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.query_urls"]], "update_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_blank"]], "update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_record"]], "gen3jobs (class in gen3.jobs)": [[4, "gen3.jobs.Gen3Jobs"]], "async_run_job_and_wait() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.async_run_job_and_wait"]], "create_job() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.create_job"]], "get_output() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_output"]], "get_status() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_status"]], "get_version() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_version"]], "is_healthy() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.is_healthy"]], "list_jobs() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.list_jobs"]], "gen3metadata (class in gen3.metadata)": [[5, "gen3.metadata.Gen3Metadata"]], "async_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create"]], "async_create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create_aliases"]], "async_delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_alias"]], "async_delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_aliases"]], "async_get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get"]], "async_get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get_aliases"]], "async_update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update"]], "async_update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update_aliases"]], "auth_provider (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.auth_provider"]], "batch_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.batch_create"]], "create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create"]], "create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_aliases"]], "create_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_index_key_path"]], "delete() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete"]], "delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_alias"]], "delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_aliases"]], "delete_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_index_key_path"]], "endpoint (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.endpoint"]], "get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get"]], "get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_aliases"]], "get_index_key_paths() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_index_key_paths"]], "get_version() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_version"]], "is_healthy() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.is_healthy"]], "query() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.query"]], "update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update"]], "update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update_aliases"]], "gen3object (class in gen3.object)": [[6, "gen3.object.Gen3Object"]], "delete_object() (gen3.object.gen3object method)": [[6, "gen3.object.Gen3Object.delete_object"]], "gen3query (class in gen3.query)": [[7, "gen3.query.Gen3Query"]], "graphql_query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.graphql_query"]], "query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.query"]], "raw_data_download() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.raw_data_download"]], "gen3submission (class in gen3.submission)": [[8, "gen3.submission.Gen3Submission"]], "create_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_program"]], "create_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_project"]], "delete_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_node"]], "delete_nodes() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_nodes"]], "delete_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_program"]], "delete_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_project"]], "delete_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_record"]], "delete_records() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_records"]], "export_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_node"]], "export_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_record"]], "get_dictionary_all() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_all"]], "get_dictionary_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_node"]], "get_graphql_schema() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_graphql_schema"]], "get_programs() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_programs"]], "get_project_dictionary() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_dictionary"]], "get_project_manifest() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_manifest"]], "get_projects() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_projects"]], "open_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.open_project"]], "query() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.query"]], "submit_file() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_file"]], "submit_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_record"]], "gen3.tools": [[9, "module-gen3.tools"]], "module": [[9, "module-gen3.tools"], [10, "module-gen3.tools.download.drs_download"], [11, "module-gen3.tools.indexing.download_manifest"], [11, "module-gen3.tools.indexing.index_manifest"], [11, "module-gen3.tools.indexing.verify_manifest"], [12, "module-gen3.tools.metadata.ingest_manifest"]], "downloadmanager (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadManager"]], "downloadstatus (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadStatus"]], "downloadable (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Downloadable"]], "manifest (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Manifest"]], "_manager (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable._manager"]], "access_methods (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.access_methods"]], "cache_hosts_wts_tokens() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.cache_hosts_wts_tokens"]], "children (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.children"]], "commons_url (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.commons_url"]], "create_object_list() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.create_object_list"]], "created_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.created_time"]], "download() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.download"]], "download() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.download"]], "download_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.download_files_in_drs_manifest"]], "end_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.end_time"]], "file_name (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_name"]], "file_name (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_name"]], "file_size (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_size"]], "file_size (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_size"]], "gen3.tools.download.drs_download": [[10, "module-gen3.tools.download.drs_download"]], "get_fresh_token() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.get_fresh_token"]], "hostname (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.hostname"]], "list_access_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_access_in_drs_manifest"]], "list_drs_object() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_drs_object"]], "list_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_files_in_drs_manifest"]], "load() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load"]], "load_manifest() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load_manifest"]], "md5sum (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.md5sum"]], "object_id (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_id"]], "object_id (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.object_id"]], "object_type (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_type"]], "pprint() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.pprint"]], "resolve_objects() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.resolve_objects"]], "start_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.start_time"]], "status (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.status"]], "updated_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.updated_time"]], "user_access() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.user_access"]], "acls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ACLS"]], "authz (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.AUTHZ"]], "current_dir (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.CURRENT_DIR"]], "guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.GUID"]], "indexd_record_page_size (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.INDEXD_RECORD_PAGE_SIZE"]], "max_concurrent_requests (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.MAX_CONCURRENT_REQUESTS"]], "max_concurrent_requests (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.MAX_CONCURRENT_REQUESTS"]], "md5 (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.MD5"]], "prev_guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.PREV_GUID"]], "size (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.SIZE"]], "tmp_folder (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.TMP_FOLDER"]], "threadcontrol (class in gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ThreadControl"]], "urls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.URLS"]], "async_download_object_manifest() (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.async_download_object_manifest"]], "async_verify_object_manifest() (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.async_verify_object_manifest"]], "delete_all_guids() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.delete_all_guids"]], "gen3.tools.indexing.download_manifest": [[11, "module-gen3.tools.indexing.download_manifest"]], "gen3.tools.indexing.index_manifest": [[11, "module-gen3.tools.indexing.index_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, "module-gen3.tools.indexing.verify_manifest"]], "index_object_manifest() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.index_object_manifest"]], "column_to_use_as_guid (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID"]], "guid_type_for_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_INDEXED_FILE_OBJECT"]], "guid_type_for_non_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"]], "max_concurrent_requests (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.MAX_CONCURRENT_REQUESTS"]], "async_ingest_metadata_manifest() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest"]], "async_query_urls_from_indexd() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_query_urls_from_indexd"]], "gen3.tools.metadata.ingest_manifest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "gen3wsstorage (class in gen3.wss)": [[13, "gen3.wss.Gen3WsStorage"]], "copy() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.copy"]], "download() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download"]], "download_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download_url"]], "ls() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls"]], "ls_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls_path"]], "rm() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm"]], "rm_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm_path"]], "upload() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload"]], "upload_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload_url"]]}}) \ No newline at end of file diff --git a/docs/_build/html/tools.html b/docs/_build/html/tools.html index 00687b817..dacf213a1 100644 --- a/docs/_build/html/tools.html +++ b/docs/_build/html/tools.html @@ -87,7 +87,7 @@

                                      Gen3 ToolsIndexing Tools

                      Verify all file object records into a manifest csv

                      Parameters:
                      @@ -435,7 +435,7 @@

                      Navigation

                    • Gen3 Tools
                      • DRS Download Tools
                      • Indexing Tools
                          -
                        • Download
                            +
                          • Download
                          • -
                          • Index
                              +
                            • Index
                            • -
                            • Verify
                                +
                              • Verify
                                • CURRENT_DIR
                                • MAX_CONCURRENT_REQUESTS
                                • async_verify_object_manifest()
                                • diff --git a/docs/_build/html/tools/metadata.html b/docs/_build/html/tools/metadata.html index 27980da2a..02b342e9a 100644 --- a/docs/_build/html/tools/metadata.html +++ b/docs/_build/html/tools/metadata.html @@ -33,9 +33,9 @@

                                  Metadata Tools

                                  -
                                  -

                                  Ingest

                                  -

                                  Tools for ingesting a CSV/TSV metadata manifest into the Metdata Service.

                                  +
                                  +

                                  Ingest

                                  +

                                  Tools for ingesting a CSV/TSV metadata manifest into the Metdata Service.

                                  gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID
                                  @@ -101,7 +101,7 @@

                                  Metadata Tools
                                  -async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1693233058.6020522.log', get_guid_from_file=True, metadata_type=None)[source]
                                  +async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1692886743.8074749.log', get_guid_from_file=True, metadata_type=None)[source]

                                  Ingest all metadata records into a manifest csv

                                  Parameters:
                                  @@ -190,7 +190,7 @@

                                  Navigation

                                • DRS Download Tools
                                • Indexing Tools
                                • Metadata Tools
                                    -
                                  • Ingest
                                      +
                                    • Ingest
                                      • COLUMN_TO_USE_AS_GUID
                                      • GUID_TYPE_FOR_INDEXED_FILE_OBJECT
                                      • GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT
                                      • From 58470f54ffcf2b05643bf305f608106639bf5341 Mon Sep 17 00:00:00 2001 From: SpencerAxelrod Date: Wed, 6 Dec 2023 05:11:32 +0000 Subject: [PATCH 10/12] Apply automatic documentation changes --- docs/_build/doctrees/environment.pickle | Bin 1553136 -> 1553141 bytes docs/_build/doctrees/tools/indexing.doctree | Bin 100101 -> 100101 bytes docs/_build/doctrees/tools/metadata.doctree | Bin 35914 -> 35919 bytes docs/_build/html/searchindex.js | 2 +- docs/_build/html/tools/indexing.html | 2 +- docs/_build/html/tools/metadata.html | 2 +- 6 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index fd6a32ce442154ea34b40a4f524cd458549097fc..2a95767eb60dd87c47926682405599feb7cec384 100644 GIT binary patch delta 11230 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 delta 11311 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 delta 128 zcmZqeV{7eWYuLiL#Y)7$%-q7#(o)aT+{o0})KD)cKV5zD{KcZ%?^-b$vht%zZt(FH>=!H3ZjU2yvfAI4ZK0Jc>ixBvhE diff --git a/docs/_build/doctrees/tools/metadata.doctree b/docs/_build/doctrees/tools/metadata.doctree index 3b74e55ada6a5d7b3b7301ff01b6fae18dac7ecd..19c1cd3a7f66f111d28eb0491d8ba184ec771aa8 100644 GIT binary patch delta 169 zcmX>#gX#PXCYA=)sV*B?mT0idWn^HOJTY8u^C=BmMt(yJV@neYOFaW4QwwuT%gO2b zHk$*rjx#gXZwdZuHVYR=rQ@Nxe10=eG3VQj4Ya=dO7*&>QgeN`0UQT|x`s9N-!Vp;*EV5HF*kh+;i1mQA MquIOpzC}SW0NSH3?f?J) diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js index 35a0cd5cf..8b46c26ba 100644 --- a/docs/_build/html/searchindex.js +++ b/docs/_build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["auth", "file", "index", "indexing", "jobs", "metadata", "object", "query", "submission", "tools", "tools/drs_pull", "tools/indexing", "tools/metadata", "wss"], "filenames": ["auth.rst", "file.rst", "index.rst", "indexing.rst", "jobs.rst", "metadata.rst", "object.rst", "query.rst", "submission.rst", "tools.rst", "tools/drs_pull.rst", "tools/indexing.rst", "tools/metadata.rst", "wss.rst"], "titles": ["Gen3 Auth Helper", "Gen3 File Class", "Welcome to Gen3 SDK\u2019s documentation!", "Gen3 Index Class", "Gen3 Jobs Class", "Gen3 Metadata Class", "Gen3 Object Class", "Gen3 Query Class", "Gen3 Submission Class", "Gen3 Tools", "DRS Download Tools", "Indexing Tools", "Metadata Tools", "Gen3 Workspace Storage"], "terms": {"class": [0, 2, 10, 11, 13], "gen3auth": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "endpoint": [0, 1, 2, 3, 4, 5, 7, 8, 13], "none": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "refresh_fil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "refresh_token": 0, "idp": 0, "client_credenti": 0, "client_scop": 0, "sourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "base": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "authbas": 0, "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "request": [0, 1, 3, 5, 8, 11, 12], "implement": 0, "order": [0, 8], "support": [0, 1, 5, 8, 11], "jwt": 0, "authent": 0, "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13], "access": [0, 1, 3, 7, 10], "token": [0, 10], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "provid": [0, 1, 3, 5, 7, 8, 12], "refresh": [0, 10], "file": [0, 2, 3, 4, 8, 9, 10, 11, 12, 13], "string": [0, 3, 5, 11, 13], "automat": 0, "when": [0, 3, 7, 10, 12], "thei": [0, 10], "expir": [0, 1], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "str": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12], "opt": 0, "The": [0, 1, 2, 3, 5, 8, 10, 11], "contain": [0, 2, 5, 8, 9, 10, 11, 12], "download": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "json": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "web": 0, "option": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "work": [0, 10], "workspac": [0, 2], "default": [0, 1, 3, 7, 8, 11, 12], "env": 0, "gen3_api_kei": 0, "credenti": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "set": [0, 1, 5, 10], "includ": [0, 3], "search": [0, 2, 3], "path": [0, 1, 5, 10, 11, 13], "valu": [0, 1, 3, 5, 7, 10, 11], "doe": [0, 12], "interpret": 0, "wt": [0, 10], "an": [0, 3, 6, 8, 10, 11], "accesstoken": 0, "If": [0, 1, 7, 11, 12], "can": [0, 3, 4, 8, 11, 12], "specifi": [0, 1, 3, 11, 13], "local": [0, 13], "indic": [0, 11], "environ": 0, "fenc": [0, 1], "tupl": [0, 3, 11, 12], "client_id": 0, "client_secret": 0, "oidc": 0, "client": [0, 3], "ha": [0, 11], "grant": 0, "allow": [0, 6, 8, 10, 11, 12], "obtain": [0, 10], "space": [0, 11], "separ": [0, 11], "list": [0, 1, 3, 4, 5, 7, 8, 10, 11, 13], "scope": [0, 1], "user": [0, 10, 12], "data": [0, 1, 3, 5, 7, 8, 10, 11], "openid": 0, "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "point": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "sandbox": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "common": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "while": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "profil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "page": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13], "instal": [0, 2, 11], "crdc": 0, "some": [0, 2], "arbitrari": 0, "kei": [0, 3, 5, 13], "variabl": [0, 7, 8], "rather": 0, "than": [0, 5], "pass": [0, 7, 8, 10], "argument": [0, 13], "constructor": 0, "id": [0, 1, 3, 5, 10, 11], "secret": 0, "note": [0, 3, 11, 12], "should": [0, 8, 11], "never": 0, "hardcod": 0, "http": [0, 7, 11, 12], "datacommon": 0, "o": 0, "gen3_oidc_client_creds_secret": 0, "initi": [0, 10], "follow": [0, 11], "curl": [0, 2], "given": [0, 3, 4, 5, 8, 10, 12, 13], "ex": [0, 11, 12], "return": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "respons": [0, 1, 3, 4, 5], "under": [0, 8, 13], "index": [0, 2, 5, 9], "authz": [0, 1, 2, 3, 9, 10, 11], "map": [0, 11], "get": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 13], "post": [0, 11], "put": 0, "delet": [0, 1, 2, 3, 5, 6, 8, 10, 11], "i": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12], "els": [0, 12], "filenam": [0, 8, 10, 11, 12], "get_access_token": [0, 2], "auto": [0, 2], "within": [0, 2, 9], "5": [0, 5], "minut": 0, "get_access_token_from_wt": [0, 2], "try": 0, "fetch": 0, "namespac": [0, 12], "refresh_access_token": [0, 2], "new": [0, 3], "gen3fil": [1, 2], "auth_provid": [1, 2, 3, 4, 5, 6, 7, 8, 13], "object": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13], "For": [1, 5, 6, 7, 8, 9, 11], "interact": [1, 3, 4, 5, 6, 8, 13], "manag": [1, 5, 10], "featur": [1, 6], "A": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "servic": [1, 3, 4, 5, 6, 8, 11, 12, 13], "presign": 1, "url": [1, 2, 3, 9, 10, 11, 12, 13], "right": 1, "now": [1, 8], "instanc": [1, 3, 6, 7, 8, 9, 10], "auth": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "delete_fil": [1, 2], "guid": [1, 2, 3, 5, 6, 9, 11, 12], "method": [1, 7, 10], "deprec": 1, "delete_file_loc": [1, 2, 6], "instead": [1, 7, 11], "all": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12], "locat": [1, 6], "store": [1, 3, 10], "remov": [1, 6, 11, 13], "its": [1, 3], "record": [1, 3, 5, 7, 8, 11, 12], "indexd": [1, 3, 6, 10, 11, 12], "uuid": [1, 3, 8], "text": [1, 7, 8], "result": [1, 8, 10, 11], "type": [1, 3, 4, 5, 7, 8, 10, 11, 12], "download_singl": [1, 2], "object_id": [1, 2, 9, 10], "singl": [1, 5, 8], "": [1, 4, 8, 10, 11], "uniqu": [1, 5], "get_presigned_url": [1, 2], "protocol": 1, "retriev": [1, 8, 10, 12], "give": 1, "limit": [1, 3, 5, 12], "time": [1, 8, 10, 11], "pick": 1, "avail": [1, 2, 10, 11], "queri": [1, 2, 3, 5, 8, 11, 12], "upload_fil": [1, 2], "file_nam": [1, 2, 3, 9, 10, 11], "expires_in": 1, "bucket": [1, 6], "upload": [1, 2, 3, 8, 13], "author": 1, "storag": [1, 2, 6], "s3": [1, 10, 11], "az": 1, "isn": 1, "t": [1, 5, 11], "int": [1, 3, 5, 7, 8, 10, 11, 12], "amount": [1, 9], "second": [1, 4], "sign": 1, "datetim": [1, 10], "utcnow": 1, "Be": 1, "sure": 1, "posit": [1, 7], "integ": [1, 3, 8], "also": 1, "treat": [1, 5], "max_presigned_url_ttl": 1, "configur": 1, "must": [1, 5], "allowed_data_upload_bucket": 1, "data_upload_bucket": 1, "represent": [1, 3], "document": [1, 3], "upload_file_to_guid": [1, 2], "exist": [1, 3, 5, 6, 9, 12], "readm": 2, "python": [2, 9, 11], "github": [2, 7], "repo": 2, "setup": 2, "inform": [2, 3, 10], "along": 2, "quickstart": 2, "script": 2, "more": [2, 5, 7, 9, 10], "detail": [2, 7, 10], "about": [2, 3], "variou": 2, "function": [2, 3, 4, 5, 9, 10, 11, 12], "mostli": 2, "docstr": 2, "code": [2, 8], "helper": 2, "gen3index": [2, 3], "async_create_record": [2, 3], "async_get_record": [2, 3], "async_get_records_from_checksum": [2, 3], "async_get_records_on_pag": [2, 3], "async_get_with_param": [2, 3], "async_query_url": [2, 3], "async_update_record": [2, 3], "create_blank": [2, 3], "create_new_vers": [2, 3], "create_record": [2, 3], "delete_record": [2, 3, 8], "get_all_record": [2, 3], "get_guids_prefix": [2, 3], "get_latest_vers": [2, 3], "get_record": [2, 3], "get_record_doc": [2, 3], "get_records_on_pag": [2, 3], "get_stat": [2, 3], "get_url": [2, 3], "get_valid_guid": [2, 3], "get_vers": [2, 3, 4, 5], "get_with_param": [2, 3], "is_healthi": [2, 3, 4, 5], "query_url": [2, 3], "update_blank": [2, 3], "update_record": [2, 3], "job": 2, "gen3job": [2, 4, 10], "async_run_job_and_wait": [2, 4], "create_job": [2, 4], "get_output": [2, 4], "get_statu": [2, 4], "list_job": [2, 4], "metadata": [2, 3, 6, 9, 11], "gen3metadata": [2, 5], "async_cr": [2, 5], "async_create_alias": [2, 5], "async_delete_alia": [2, 5], "async_delete_alias": [2, 5], "async_get": [2, 5], "async_get_alias": [2, 5], "async_upd": [2, 5], "async_update_alias": [2, 5], "batch_creat": [2, 5], "creat": [2, 3, 4, 5, 6, 8, 10, 11], "create_alias": [2, 5], "create_index_key_path": [2, 5], "delete_alia": [2, 5], "delete_alias": [2, 5], "delete_index_key_path": [2, 5], "get_alias": [2, 5], "get_index_key_path": [2, 5], "updat": [2, 3, 5, 10, 11], "update_alias": [2, 5], "gen3object": [2, 6], "delete_object": [2, 6], "gen3queri": [2, 7], "graphql_queri": [2, 7], "raw_data_download": [2, 7], "submiss": 2, "gen3submiss": [2, 8], "create_program": [2, 8], "create_project": [2, 8], "delete_nod": [2, 8], "delete_program": [2, 8], "delete_project": [2, 8], "export_nod": [2, 8], "export_record": [2, 8], "get_dictionary_al": [2, 8], "get_dictionary_nod": [2, 8], "get_graphql_schema": [2, 8], "get_program": [2, 8], "get_project_dictionari": [2, 8], "get_project_manifest": [2, 8], "get_project": [2, 8], "open_project": [2, 8], "submit_fil": [2, 8], "submit_record": [2, 8], "tool": 2, "dr": [2, 9], "downloadmanag": [2, 9, 10], "cache_hosts_wts_token": [2, 9, 10], "get_fresh_token": [2, 9, 10], "resolve_object": [2, 9, 10], "user_access": [2, 9, 10], "downloadstatu": [2, 9, 10], "statu": [2, 4, 9, 10], "start_tim": [2, 9, 10], "end_tim": [2, 9, 10], "object_typ": [2, 9, 10], "hostnam": [2, 9, 10], "file_s": [2, 9, 10, 11], "updated_tim": [2, 9, 10], "created_tim": [2, 9, 10], "access_method": [2, 9, 10], "children": [2, 9, 10], "_manag": [2, 9, 10], "pprint": [2, 9, 10], "manifest": [2, 8, 9, 10, 11, 12], "md5sum": [2, 9, 10], "commons_url": [2, 9, 10, 11, 12], "create_object_list": [2, 9, 10], "load": [2, 9, 10], "load_manifest": [2, 9, 10], "download_drs_object": [], "download_files_in_drs_manifest": [2, 9, 10], "list_access_in_drs_manifest": [2, 9, 10], "list_drs_object": [2, 9, 10], "list_files_in_drs_manifest": [2, 9, 10], "current_dir": [2, 9, 11], "indexd_record_page_s": [2, 9, 11], "max_concurrent_request": [2, 9, 11, 12], "tmp_folder": [2, 9, 11], "async_download_object_manifest": [2, 9, 11], "size": [2, 3, 9, 10, 11], "md5": [2, 3, 9, 11], "acl": [2, 3, 9, 11], "prev_guid": [2, 9, 11], "threadcontrol": [2, 9, 11], "delete_all_guid": [2, 9, 11], "index_object_manifest": [2, 9, 11], "verifi": [2, 9], "async_verify_object_manifest": [2, 9, 11], "ingest": [2, 9], "column_to_use_as_guid": [2, 9, 12], "guid_type_for_indexed_file_object": [2, 9, 12], "guid_type_for_non_indexed_file_object": [2, 9, 12], "async_ingest_metadata_manifest": [2, 9, 12], "async_query_urls_from_indexd": [2, 9, 12], "gen3wsstorag": [2, 13], "copi": [2, 13], "download_url": [2, 13], "l": [2, 13], "ls_path": [2, 13], "rm": [2, 13], "rm_path": [2, 13], "upload_url": [2, 13], "modul": [2, 10, 11], "service_loc": [3, 4, 5], "public": [3, 5], "read": [3, 5, 11], "onli": [3, 5, 7, 8, 10, 11], "necessari": [3, 5], "basic": [3, 11, 12], "cred": 3, "async": [3, 4, 5, 9, 11, 12], "hash": [3, 11], "did": 3, "baseid": 3, "urls_metadata": 3, "version": [3, 4, 5], "_ssl": [3, 4, 5], "asynchron": [3, 4, 5], "dict": [3, 4, 5, 10, 11, 12], "eg": 3, "ab167e49d25b488939b1ede42752458b": 3, "associ": [3, 5], "made": 3, "where": [3, 5, 11, 12], "you": [3, 8, 11], "control": 3, "rbac": 3, "name": [3, 4, 8, 10, 11, 12, 13], "addit": [3, 5, 10, 11], "entri": [3, 11], "attach": [3, 5], "each": [3, 8, 10, 11], "group": 3, "previou": [3, 11], "checksum": [3, 10], "checksum_typ": 3, "match": [3, 5, 12], "param": [3, 5, 8, 10], "correspond": 3, "suppli": 3, "need": [3, 7, 10, 11], "handl": [3, 10], "hash_typ": 3, "whether": [3, 4, 5, 8, 11, 12], "ssl": [3, 4, 5], "pattern": [3, 12], "against": [3, 7, 8, 11, 12], "kwarg": [3, 4, 5], "bodi": 3, "dictionari": [3, 4, 5, 7, 8], "format": [3, 5, 8, 11], "blank": 3, "add": [3, 5], "sinc": 3, "content": [3, 13], "immut": 3, "want": [3, 8], "chang": [3, 11], "That": 3, "field": [3, 5, 7, 11, 12], "old": 3, "ad": 3, "least": 3, "one": [3, 5, 10, 11], "suffici": 3, "good": 3, "idea": 3, "number": [3, 7, 8, 11, 12], "noth": [3, 6], "dist_resolut": 3, "true": [3, 4, 5, 6, 7, 8, 10, 11, 12], "alia": [3, 5], "distribut": 3, "identifi": [3, 5, 9, 11], "boolean": 3, "we": [3, 11], "pagin": 3, "fals": [3, 5, 6, 10, 11], "start": [3, 4, 7, 8, 10], "prefix": 3, "rtype": 3, "has_vers": 3, "latest": 3, "exclud": 3, "without": [3, 5], "repres": [3, 5, 10], "info": [3, 11], "algorithm": 3, "count": 3, "valid": [3, 7], "file_st": 3, "like": [3, 5, 9, 11, 12], "signpost": 3, "healthi": [3, 4, 5], "rev": 3, "revis": 3, "simpl": 3, "consist": 3, "mechan": 3, "dispatch": 4, "job_nam": 4, "job_input": 4, "wait": 4, "output": [4, 5, 11, 12], "Will": [4, 7, 10], "sleep": 4, "linear": 4, "delai": 4, "until": [4, 10], "done": 4, "1": [4, 5, 8, 10, 11], "global": [4, 5], "input": [4, 10, 11], "job_id": 4, "previous": 4, "complet": [4, 11], "bool": [4, 5, 8, 10, 11, 12], "md": [5, 7, 10, 12], "admin_endpoint_suffix": 5, "admin": [5, 11], "alias": 5, "overwrit": 5, "what": 5, "end": [5, 10], "up": [5, 9], "blob": [5, 7], "asyncron": 5, "altern": [5, 11], "merg": 5, "AND": 5, "descript": 5, "metadata_list": 5, "specif": [5, 8, 11, 12], "expect": [5, 9, 11], "anoth": 5, "databas": 5, "return_full_metadata": 5, "10": [5, 7, 11], "offset": [5, 7], "0": [5, 7, 8, 11], "use_agg_md": 5, "off": 5, "logic": [5, 12], "filter": [5, 7], "b": [5, 11], "2": [5, 11], "have": [5, 11], "ar": [5, 7, 8, 9, 10, 11], "alwai": 5, "nest": 5, "c": [5, 11], "3": [5, 11], "same": [5, 11, 13], "whose": 5, "ani": [5, 10, 11], "But": 5, "differ": 5, "33": 5, "d": 5, "4": [5, 11], "e": [5, 10], "won": 5, "333": 5, "defin": [5, 8, 10], "api": [5, 8, 11], "just": [5, 11, 12], "max": 5, "num": 5, "OR": 5, "level": 6, "current": [6, 8, 10], "system": [6, 7, 8, 9], "elasticsearch": 7, "query_str": 7, "execut": [7, 8, 11], "graphql": [7, 8], "query_txt": [7, 8], "syntax": 7, "see": [7, 10, 11], "com": 7, "uc": 7, "cdi": 7, "guppi": 7, "master": 7, "doc": [7, 10], "data_typ": 7, "my_index": 7, "my_field": 7, "first": [7, 8], "filter_object": 7, "sort_object": 7, "verbos": [7, 8], "row": [7, 8, 11, 12], "sort": 7, "equal": 7, "respect": 7, "complex": 7, "appli": 7, "One": 7, "unaccess": 7, "regular": 7, "tier": 7, "mode": 7, "subject": [7, 8], "50": 7, "vital_statu": 7, "submitter_id": 7, "aliv": 7, "asc": 7, "sort_field": 7, "raw": [7, 11], "project_id": [7, 8], "my_program": 7, "my_project": 7, "submit": [8, 11], "export": [8, 10], "sheepdog": 8, "through": [8, 11], "peregrin": 8, "sub": 8, "program": [8, 11], "project": [8, 11], "dcf": 8, "node_nam": 8, "batch_siz": 8, "100": [8, 11], "node": 8, "how": [8, 11], "mani": [8, 11], "print": [8, 10], "progress": [8, 10], "log": [8, 10, 11, 12], "ccle": 8, "demograph": 8, "ordered_node_list": 8, "revers": 8, "graph": 8, "experi": 8, "empti": [8, 11], "uuid1": 8, "uuid2": 8, "node_typ": 8, "fileformat": 8, "which": [8, 10], "belong": 8, "either": 8, "tsv": [8, 11, 12], "screen": 8, "sampl": [8, 10], "ccle_sample_nod": 8, "d70b41b9": 8, "6f90": 8, "4714": 8, "8420": 8, "e043ab8b77b9": 8, "ccle_one_record": 8, "entir": 8, "schema": 8, "run": [8, 11], "introspect": 8, "regist": 8, "mark": 8, "open": [8, 10, 11], "mean": 8, "etc": 8, "max_tri": 8, "retri": 8, "fail": [8, 10], "chunk_siz": 8, "30": 8, "row_offset": 8, "spreadsheet": 8, "multipl": [8, 11], "csv": [8, 11, 12], "xlsx": 8, "worksheet": 8, "skip": 8, "data_spreadsheet": 8, "arrai": 8, "action": [9, 11], "These": 9, "broken": 9, "broad": 9, "categori": 9, "task": 9, "relat": 9, "persist": 9, "Such": 9, "mai": [9, 11], "involv": 9, "assign": 9, "everi": [9, 11], "alreadi": 9, "larg": 9, "most": 9, "util": 9, "capabl": 9, "make": [9, 11], "effici": 9, "main": 10, "datafil": 10, "manifest_1": 10, "my_common": 10, "org": 10, "gen3": [10, 11, 12], "my_credenti": 10, "howto": 10, "drsdownload": 10, "drs_download": 10, "download_list": 10, "show_progress": 10, "assist": 10, "minimum": 10, "interest": 10, "object_list": 10, "host": 10, "It": 10, "possibl": 10, "save_directori": 10, "unpack_packag": 10, "delete_unpacked_packag": 10, "directori": [10, 11], "call": [10, 13], "case": 10, "error": [10, 11, 12], "continu": 10, "save": 10, "show": 10, "bar": 10, "disabl": 10, "unpack": 10, "packag": 10, "after": 10, "them": [10, 11], "drs_hostnam": 10, "known": 10, "otherwis": 10, "success": 10, "resolv": 10, "permiss": 10, "wai": 10, "determin": [10, 11, 12], "reason": 10, "pend": 10, "objectid": 10, "datamanag": 10, "occur": 10, "attribut": [10, 11], "drsobjecttyp": 10, "unknown": 10, "factori": 10, "popul": [10, 12], "server": 10, "requir": 10, "byte": 10, "timestamp": 10, "last": 10, "g": 10, "child": 10, "bundl": 10, "self": 10, "indent": 10, "pretti": 10, "In": 10, "similar": 10, "linux": 10, "tree": 10, "command": [10, 11], "typic": 10, "discoveri": 10, "cach": 10, "files": 10, "static": 10, "bownload": 10, "successfulli": 10, "pars": [10, 11, 12, 13], "output_dir": 10, "conveni": 10, "infil": 10, "wrapper": 10, "cli": 10, "process": 11, "coroutin": 11, "asyncio": [11, 12], "librari": 11, "comma": 11, "header": 11, "download_manifest": 11, "per": [11, 12], "maximum": [11, 12], "desir": 11, "concurr": [11, 12], "across": 11, "thread": 11, "folder": 11, "place": 11, "temporari": 11, "write": 11, "safe": 11, "so": 11, "To": 11, "workaround": 11, "concat": 11, "output_filenam": [11, 12], "num_process": 11, "24": [11, 12], "input_manifest": 11, "python_subprocess_command": 11, "root": [11, 12], "domain": [11, 12], "live": [11, 12], "parallel": 11, "hit": 11, "total": 11, "help": 11, "everyth": 11, "attempt": 11, "By": 11, "someth": 11, "maco": 11, "x": 11, "python3": 11, "tab": 11, "session": 11, "column": [11, 12], "shown": 11, "below": 11, "255e396f": 11, "f1f8": 11, "11e9": 11, "9a07": 11, "0a80fada099c": 11, "473d83400bc1bc9dc635e334faddf33c": 11, "363455714": 11, "pdcdatastor": 11, "test1": 11, "0a80fada098c": 11, "473d83400bc1bc9dc635e334faddd33c": 11, "343434344": 11, "test2": 11, "0a80fada097c": 11, "473d83400bc1bc9dc635e334fadd433c": 11, "543434443": 11, "phs0001": 11, "phs0002": 11, "test3": 11, "0a80fada096c": 11, "test4": 11, "0a80fada010c": 11, "473d83400bc1bc9dc635e334fadde33c": 11, "test5": 11, "index_manifest": 11, "usag": 11, "py": 11, "giangb": 11, "planx": 11, "pla": 11, "net": 11, "manifest_fil": [11, 12], "path_to_manifest": 11, "replace_url": 11, "thread_num": 11, "api_kei": 11, "processed_fil": 11, "num_total_fil": 11, "synchron": 11, "warn": 11, "IF": 11, "know": 11, "THE": 11, "implic": 11, "manifest_file_delimit": [11, 12], "submit_additional_metadata_column": 11, "force_metadata_columns_even_if_empti": 11, "loop": 11, "password": [11, 12], "flag": 11, "replac": 11, "delimit": 11, "forc": 11, "creation": 11, "even": 11, "enabl": 11, "illustr": 11, "columna": 11, "columnb": 11, "columnc": 11, "dataa": 11, "datab": 11, "guid_exampl": 11, "md5_hash": 11, "fieldnam": 11, "There": 11, "those": 11, "abov": 11, "overrid": [11, 12], "assum": 11, "behavior": 11, "simpli": 11, "manifest_row_pars": [11, 12], "custom": 11, "import": 11, "verify_manifest": 11, "def": 11, "_get_authz_from_row": 11, "strip": 11, "parser": [11, 12], "verify_object_manifest": 11, "verif": 11, "error_nam": 11, "value_from_manifest": 11, "actual": 11, "value_from_indexd": 11, "93d9af72": 11, "b0f1": 11, "450c": 11, "a5c6": 11, "7d3d8d2083b4": 11, "dev": 11, "test": 11, "_get_acl_from_row": 11, "_get_file_name_from_row": 11, "_get_file_size_from_row": 11, "_get_guid_from_row": 11, "_get_md5_from_row": 11, "_get_urls_from_row": 11, "1692675811": [], "9771066": [], "indexd_field": [11, 12], "func_to_parse_row": [11, 12], "delimet": [11, 12], "metdata": 12, "ingest_manifest": 12, "NOT": 12, "guid_from_fil": 12, "_get_guid_for_row": 12, "indexed_file_object_guid": 12, "_query_for_associated_indexd_record_guid": 12, "guid_for_row": 12, "elsewher": 12, "metadata_sourc": 12, "1692675812": [], "3144128": [], "get_guid_from_fil": 12, "metadata_typ": 12, "dbgap": 12, "usual": 12, "fill": 12, "_guid_typ": 12, "is_indexed_file_object": 12, "lock": 12, "semaphor": 12, "semaphon": 12, "ammount": 12, "connect": 12, "wss": 13, "src_urlstr": 13, "dest_urlstr": 13, "appropri": 13, "src_w": 13, "src_wskei": 13, "dest_path": 13, "disk": 13, "w": 13, "wskei": 13, "ws_urlstr": 13, "form": 13, "src_path": 13, "dest_w": 13, "dest_wskei": 13, "1692676927": [], "2291234": [], "6143494": [], "1692716275": [], "1734753": [], "577429": [], "1692716527": [], "4222114": [], "9511294": [], "1692717039": [], "3338752": [], "744264": [], "1692741377": [], "0982177": [], "4559627": [], "1692743380": [], "4060478": [], "7860734": [], "1692743691": [], "983341": [], "1692743692": [], "4543839": [], "1692825679": [], "249731": [], "5510318": [], "1692886743": [], "381985": [], "8074749": [], "1693592991": [], "493957": [], "9576306": [], "1693593902": [], "1950202": [], "507454": [], "1696860505": [], "0205865": [], "4065857": [], "1696863250": [], "490177": [], "780603": [], "1696863654": [], "490772": [], "8764913": [], "1696866574": [], "146243": [], "4969604": [], "1696867172": [], "15485": [], "4488156": [], "1696870997": [], "41439": [], "7891934": [], "1696874363": [], "5903769": [], "1696874364": [], "0760994": [], "1696874786": [], "0779042": [], "4368396": [], "1696875823": [], "7846825": [], "1696875824": [], "2559378": [], "1696877990": [], "9968846": [], "1696877991": [], "3616166": [], "1696878184": [], "6719804": [], "1696878185": [], "1095488": [], "1696878605": [], "0427673": [], "4048421": [], "1696885653": [], "7007155": [], "1696885654": [], "1520922": [], "1697467909": [], "0874708": [], "51657": [], "1697484656": [], "68711": [], "1697484657": [], "1308327": [], "1700001291": [], "6339526": [], "9630976": [], "1700002025": [], "294231": [], "5915642": [], "1700004267": [], "4130003": [], "8317993": [], "1700005111": [], "074543": [], "4001298": [], "1700005642": [], "8724742": [], "1700005643": [], "1597712": [], "1700499325": [], "4715705": [], "7661629": [], "1700591014": [], "4958894": [], "8457959": [], "1700592493": [], "8351357": [], "1700592494": [], "1116993": [], "1700678708": [], "9883742": [], "1700678709": [], "2699912": [], "1700678999": 11, "9725351": 11, "1700679000": 12, "272037": 12}, "objects": {"gen3.auth": [[0, 0, 1, "", "Gen3Auth"]], "gen3.auth.Gen3Auth": [[0, 1, 1, "", "curl"], [0, 1, 1, "", "get_access_token"], [0, 1, 1, "", "get_access_token_from_wts"], [0, 1, 1, "", "refresh_access_token"]], "gen3.file": [[1, 0, 1, "", "Gen3File"]], "gen3.file.Gen3File": [[1, 1, 1, "", "delete_file"], [1, 1, 1, "", "delete_file_locations"], [1, 1, 1, "", "download_single"], [1, 1, 1, "", "get_presigned_url"], [1, 1, 1, "", "upload_file"], [1, 1, 1, "", "upload_file_to_guid"]], "gen3.index": [[3, 0, 1, "", "Gen3Index"]], "gen3.index.Gen3Index": [[3, 1, 1, "", "async_create_record"], [3, 1, 1, "", "async_get_record"], [3, 1, 1, "", "async_get_records_from_checksum"], [3, 1, 1, "", "async_get_records_on_page"], [3, 1, 1, "", "async_get_with_params"], [3, 1, 1, "", "async_query_urls"], [3, 1, 1, "", "async_update_record"], [3, 1, 1, "", "create_blank"], [3, 1, 1, "", "create_new_version"], [3, 1, 1, "", "create_record"], [3, 1, 1, "", "delete_record"], [3, 1, 1, "", "get"], [3, 1, 1, "", "get_all_records"], [3, 1, 1, "", "get_guids_prefix"], [3, 1, 1, "", "get_latest_version"], [3, 1, 1, "", "get_record"], [3, 1, 1, "", "get_record_doc"], [3, 1, 1, "", "get_records"], [3, 1, 1, "", "get_records_on_page"], [3, 1, 1, "", "get_stats"], [3, 1, 1, "", "get_urls"], [3, 1, 1, "", "get_valid_guids"], [3, 1, 1, "", "get_version"], [3, 1, 1, "", "get_versions"], [3, 1, 1, "", "get_with_params"], [3, 1, 1, "", "is_healthy"], [3, 1, 1, "", "query_urls"], [3, 1, 1, "", "update_blank"], [3, 1, 1, "", "update_record"]], "gen3.jobs": [[4, 0, 1, "", "Gen3Jobs"]], "gen3.jobs.Gen3Jobs": [[4, 1, 1, "", "async_run_job_and_wait"], [4, 1, 1, "", "create_job"], [4, 1, 1, "", "get_output"], [4, 1, 1, "", "get_status"], [4, 1, 1, "", "get_version"], [4, 1, 1, "", "is_healthy"], [4, 1, 1, "", "list_jobs"]], "gen3.metadata": [[5, 0, 1, "", "Gen3Metadata"]], "gen3.metadata.Gen3Metadata": [[5, 1, 1, "", "async_create"], [5, 1, 1, "", "async_create_aliases"], [5, 1, 1, "", "async_delete_alias"], [5, 1, 1, "", "async_delete_aliases"], [5, 1, 1, "", "async_get"], [5, 1, 1, "", "async_get_aliases"], [5, 1, 1, "", "async_update"], [5, 1, 1, "", "async_update_aliases"], [5, 2, 1, "", "auth_provider"], [5, 1, 1, "", "batch_create"], [5, 1, 1, "", "create"], [5, 1, 1, "", "create_aliases"], [5, 1, 1, "", "create_index_key_path"], [5, 1, 1, "", "delete"], [5, 1, 1, "", "delete_alias"], [5, 1, 1, "", "delete_aliases"], [5, 1, 1, "", "delete_index_key_path"], [5, 2, 1, "", "endpoint"], [5, 1, 1, "", "get"], [5, 1, 1, "", "get_aliases"], [5, 1, 1, "", "get_index_key_paths"], [5, 1, 1, "", "get_version"], [5, 1, 1, "", "is_healthy"], [5, 1, 1, "", "query"], [5, 1, 1, "", "update"], [5, 1, 1, "", "update_aliases"]], "gen3.object": [[6, 0, 1, "", "Gen3Object"]], "gen3.object.Gen3Object": [[6, 1, 1, "", "delete_object"]], "gen3.query": [[7, 0, 1, "", "Gen3Query"]], "gen3.query.Gen3Query": [[7, 1, 1, "", "graphql_query"], [7, 1, 1, "", "query"], [7, 1, 1, "", "raw_data_download"]], "gen3.submission": [[8, 0, 1, "", "Gen3Submission"]], "gen3.submission.Gen3Submission": [[8, 1, 1, "", "create_program"], [8, 1, 1, "", "create_project"], [8, 1, 1, "", "delete_node"], [8, 1, 1, "", "delete_nodes"], [8, 1, 1, "", "delete_program"], [8, 1, 1, "", "delete_project"], [8, 1, 1, "", "delete_record"], [8, 1, 1, "", "delete_records"], [8, 1, 1, "", "export_node"], [8, 1, 1, "", "export_record"], [8, 1, 1, "", "get_dictionary_all"], [8, 1, 1, "", "get_dictionary_node"], [8, 1, 1, "", "get_graphql_schema"], [8, 1, 1, "", "get_programs"], [8, 1, 1, "", "get_project_dictionary"], [8, 1, 1, "", "get_project_manifest"], [8, 1, 1, "", "get_projects"], [8, 1, 1, "", "open_project"], [8, 1, 1, "", "query"], [8, 1, 1, "", "submit_file"], [8, 1, 1, "", "submit_record"]], "gen3": [[9, 3, 0, "-", "tools"]], "gen3.tools.download": [[10, 3, 0, "-", "drs_download"]], "gen3.tools.download.drs_download": [[10, 0, 1, "", "DownloadManager"], [10, 0, 1, "", "DownloadStatus"], [10, 0, 1, "", "Downloadable"], [10, 0, 1, "", "Manifest"], [10, 4, 1, "", "download_files_in_drs_manifest"], [10, 4, 1, "", "list_access_in_drs_manifest"], [10, 4, 1, "", "list_drs_object"], [10, 4, 1, "", "list_files_in_drs_manifest"]], "gen3.tools.download.drs_download.DownloadManager": [[10, 1, 1, "", "cache_hosts_wts_tokens"], [10, 1, 1, "", "download"], [10, 1, 1, "", "get_fresh_token"], [10, 1, 1, "", "resolve_objects"], [10, 1, 1, "", "user_access"]], "gen3.tools.download.drs_download.DownloadStatus": [[10, 2, 1, "", "end_time"], [10, 2, 1, "", "start_time"], [10, 2, 1, "", "status"]], "gen3.tools.download.drs_download.Downloadable": [[10, 2, 1, "", "_manager"], [10, 2, 1, "", "access_methods"], [10, 2, 1, "", "children"], [10, 2, 1, "", "created_time"], [10, 1, 1, "", "download"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 2, 1, "", "hostname"], [10, 2, 1, "", "object_id"], [10, 2, 1, "", "object_type"], [10, 1, 1, "", "pprint"], [10, 2, 1, "", "updated_time"]], "gen3.tools.download.drs_download.Manifest": [[10, 2, 1, "", "commons_url"], [10, 1, 1, "", "create_object_list"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 1, 1, "", "load"], [10, 1, 1, "", "load_manifest"], [10, 2, 1, "", "md5sum"], [10, 2, 1, "", "object_id"]], "gen3.tools.indexing": [[11, 3, 0, "-", "download_manifest"], [11, 3, 0, "-", "index_manifest"], [11, 3, 0, "-", "verify_manifest"]], "gen3.tools.indexing.download_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "INDEXD_RECORD_PAGE_SIZE"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 2, 1, "", "TMP_FOLDER"], [11, 4, 1, "", "async_download_object_manifest"]], "gen3.tools.indexing.index_manifest": [[11, 2, 1, "", "ACLS"], [11, 2, 1, "", "AUTHZ"], [11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "GUID"], [11, 2, 1, "", "MD5"], [11, 2, 1, "", "PREV_GUID"], [11, 2, 1, "", "SIZE"], [11, 0, 1, "", "ThreadControl"], [11, 2, 1, "", "URLS"], [11, 4, 1, "", "delete_all_guids"], [11, 4, 1, "", "index_object_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 4, 1, "", "async_verify_object_manifest"]], "gen3.tools.metadata": [[12, 3, 0, "-", "ingest_manifest"]], "gen3.tools.metadata.ingest_manifest": [[12, 2, 1, "", "COLUMN_TO_USE_AS_GUID"], [12, 2, 1, "", "GUID_TYPE_FOR_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [12, 4, 1, "", "async_ingest_metadata_manifest"], [12, 4, 1, "", "async_query_urls_from_indexd"]], "gen3.wss": [[13, 0, 1, "", "Gen3WsStorage"]], "gen3.wss.Gen3WsStorage": [[13, 1, 1, "", "copy"], [13, 1, 1, "", "download"], [13, 1, 1, "", "download_url"], [13, 1, 1, "", "ls"], [13, 1, 1, "", "ls_path"], [13, 1, 1, "", "rm"], [13, 1, 1, "", "rm_path"], [13, 1, 1, "", "upload"], [13, 1, 1, "", "upload_url"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:module", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "auth": 0, "helper": 0, "file": 1, "class": [1, 3, 4, 5, 6, 7, 8], "welcom": 2, "sdk": 2, "": 2, "document": 2, "indic": 2, "tabl": 2, "index": [3, 11], "job": 4, "metadata": [5, 12], "object": 6, "queri": 7, "submiss": 8, "tool": [9, 10, 11, 12], "dr": 10, "download": [10, 11], "verifi": 11, "ingest": 12, "workspac": 13, "storag": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Gen3 Auth Helper": [[0, "gen3-auth-helper"]], "Gen3 File Class": [[1, "gen3-file-class"]], "Welcome to Gen3 SDK\u2019s documentation!": [[2, "welcome-to-gen3-sdk-s-documentation"]], "Indices and tables": [[2, "indices-and-tables"]], "Gen3 Index Class": [[3, "gen3-index-class"]], "Gen3 Jobs Class": [[4, "gen3-jobs-class"]], "Gen3 Metadata Class": [[5, "gen3-metadata-class"]], "Gen3 Object Class": [[6, "gen3-object-class"]], "Gen3 Query Class": [[7, "gen3-query-class"]], "Gen3 Submission Class": [[8, "gen3-submission-class"]], "Gen3 Tools": [[9, "gen3-tools"]], "DRS Download Tools": [[10, "module-gen3.tools.download.drs_download"]], "Indexing Tools": [[11, "indexing-tools"]], "Download": [[11, "module-gen3.tools.indexing.download_manifest"]], "Index": [[11, "module-gen3.tools.indexing.index_manifest"]], "Verify": [[11, "module-gen3.tools.indexing.verify_manifest"]], "Metadata Tools": [[12, "metadata-tools"]], "Ingest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "Gen3 Workspace Storage": [[13, "gen3-workspace-storage"]]}, "indexentries": {"gen3auth (class in gen3.auth)": [[0, "gen3.auth.Gen3Auth"]], "curl() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.curl"]], "get_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token"]], "get_access_token_from_wts() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token_from_wts"]], "refresh_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.refresh_access_token"]], "gen3file (class in gen3.file)": [[1, "gen3.file.Gen3File"]], "delete_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file"]], "delete_file_locations() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file_locations"]], "download_single() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.download_single"]], "get_presigned_url() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.get_presigned_url"]], "upload_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file"]], "upload_file_to_guid() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file_to_guid"]], "gen3index (class in gen3.index)": [[3, "gen3.index.Gen3Index"]], "async_create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_create_record"]], "async_get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_record"]], "async_get_records_from_checksum() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_from_checksum"]], "async_get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_on_page"]], "async_get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_with_params"]], "async_query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_query_urls"]], "async_update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_update_record"]], "create_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_blank"]], "create_new_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_new_version"]], "create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_record"]], "delete_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.delete_record"]], "get() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get"]], "get_all_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_all_records"]], "get_guids_prefix() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_guids_prefix"]], "get_latest_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_latest_version"]], "get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record"]], "get_record_doc() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record_doc"]], "get_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records"]], "get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records_on_page"]], "get_stats() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_stats"]], "get_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_urls"]], "get_valid_guids() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_valid_guids"]], "get_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_version"]], "get_versions() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_versions"]], "get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_with_params"]], "is_healthy() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.is_healthy"]], "query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.query_urls"]], "update_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_blank"]], "update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_record"]], "gen3jobs (class in gen3.jobs)": [[4, "gen3.jobs.Gen3Jobs"]], "async_run_job_and_wait() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.async_run_job_and_wait"]], "create_job() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.create_job"]], "get_output() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_output"]], "get_status() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_status"]], "get_version() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_version"]], "is_healthy() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.is_healthy"]], "list_jobs() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.list_jobs"]], "gen3metadata (class in gen3.metadata)": [[5, "gen3.metadata.Gen3Metadata"]], "async_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create"]], "async_create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create_aliases"]], "async_delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_alias"]], "async_delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_aliases"]], "async_get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get"]], "async_get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get_aliases"]], "async_update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update"]], "async_update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update_aliases"]], "auth_provider (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.auth_provider"]], "batch_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.batch_create"]], "create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create"]], "create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_aliases"]], "create_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_index_key_path"]], "delete() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete"]], "delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_alias"]], "delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_aliases"]], "delete_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_index_key_path"]], "endpoint (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.endpoint"]], "get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get"]], "get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_aliases"]], "get_index_key_paths() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_index_key_paths"]], "get_version() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_version"]], "is_healthy() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.is_healthy"]], "query() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.query"]], "update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update"]], "update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update_aliases"]], "gen3object (class in gen3.object)": [[6, "gen3.object.Gen3Object"]], "delete_object() (gen3.object.gen3object method)": [[6, "gen3.object.Gen3Object.delete_object"]], "gen3query (class in gen3.query)": [[7, "gen3.query.Gen3Query"]], "graphql_query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.graphql_query"]], "query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.query"]], "raw_data_download() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.raw_data_download"]], "gen3submission (class in gen3.submission)": [[8, "gen3.submission.Gen3Submission"]], "create_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_program"]], "create_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_project"]], "delete_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_node"]], "delete_nodes() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_nodes"]], "delete_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_program"]], "delete_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_project"]], "delete_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_record"]], "delete_records() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_records"]], "export_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_node"]], "export_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_record"]], "get_dictionary_all() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_all"]], "get_dictionary_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_node"]], "get_graphql_schema() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_graphql_schema"]], "get_programs() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_programs"]], "get_project_dictionary() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_dictionary"]], "get_project_manifest() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_manifest"]], "get_projects() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_projects"]], "open_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.open_project"]], "query() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.query"]], "submit_file() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_file"]], "submit_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_record"]], "gen3.tools": [[9, "module-gen3.tools"]], "module": [[9, "module-gen3.tools"], [10, "module-gen3.tools.download.drs_download"], [11, "module-gen3.tools.indexing.download_manifest"], [11, "module-gen3.tools.indexing.index_manifest"], [11, "module-gen3.tools.indexing.verify_manifest"], [12, "module-gen3.tools.metadata.ingest_manifest"]], "downloadmanager (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadManager"]], "downloadstatus (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadStatus"]], "downloadable (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Downloadable"]], "manifest (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Manifest"]], "_manager (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable._manager"]], "access_methods (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.access_methods"]], "cache_hosts_wts_tokens() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.cache_hosts_wts_tokens"]], "children (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.children"]], "commons_url (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.commons_url"]], "create_object_list() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.create_object_list"]], "created_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.created_time"]], "download() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.download"]], "download() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.download"]], "download_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.download_files_in_drs_manifest"]], "end_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.end_time"]], "file_name (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_name"]], "file_name (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_name"]], "file_size (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_size"]], "file_size (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_size"]], "gen3.tools.download.drs_download": [[10, "module-gen3.tools.download.drs_download"]], "get_fresh_token() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.get_fresh_token"]], "hostname (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.hostname"]], "list_access_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_access_in_drs_manifest"]], "list_drs_object() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_drs_object"]], "list_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_files_in_drs_manifest"]], "load() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load"]], "load_manifest() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load_manifest"]], "md5sum (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.md5sum"]], "object_id (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_id"]], "object_id (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.object_id"]], "object_type (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_type"]], "pprint() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.pprint"]], "resolve_objects() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.resolve_objects"]], "start_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.start_time"]], "status (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.status"]], "updated_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.updated_time"]], "user_access() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.user_access"]], "acls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ACLS"]], "authz (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.AUTHZ"]], "current_dir (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.CURRENT_DIR"]], "guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.GUID"]], "indexd_record_page_size (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.INDEXD_RECORD_PAGE_SIZE"]], "max_concurrent_requests (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.MAX_CONCURRENT_REQUESTS"]], "max_concurrent_requests (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.MAX_CONCURRENT_REQUESTS"]], "md5 (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.MD5"]], "prev_guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.PREV_GUID"]], "size (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.SIZE"]], "tmp_folder (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.TMP_FOLDER"]], "threadcontrol (class in gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ThreadControl"]], "urls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.URLS"]], "async_download_object_manifest() (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.async_download_object_manifest"]], "async_verify_object_manifest() (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.async_verify_object_manifest"]], "delete_all_guids() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.delete_all_guids"]], "gen3.tools.indexing.download_manifest": [[11, "module-gen3.tools.indexing.download_manifest"]], "gen3.tools.indexing.index_manifest": [[11, "module-gen3.tools.indexing.index_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, "module-gen3.tools.indexing.verify_manifest"]], "index_object_manifest() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.index_object_manifest"]], "column_to_use_as_guid (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID"]], "guid_type_for_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_INDEXED_FILE_OBJECT"]], "guid_type_for_non_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"]], "max_concurrent_requests (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.MAX_CONCURRENT_REQUESTS"]], "async_ingest_metadata_manifest() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest"]], "async_query_urls_from_indexd() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_query_urls_from_indexd"]], "gen3.tools.metadata.ingest_manifest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "gen3wsstorage (class in gen3.wss)": [[13, "gen3.wss.Gen3WsStorage"]], "copy() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.copy"]], "download() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download"]], "download_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download_url"]], "ls() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls"]], "ls_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls_path"]], "rm() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm"]], "rm_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm_path"]], "upload() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload"]], "upload_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload_url"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["auth", "file", "index", "indexing", "jobs", "metadata", "object", "query", "submission", "tools", "tools/drs_pull", "tools/indexing", "tools/metadata", "wss"], "filenames": ["auth.rst", "file.rst", "index.rst", "indexing.rst", "jobs.rst", "metadata.rst", "object.rst", "query.rst", "submission.rst", "tools.rst", "tools/drs_pull.rst", "tools/indexing.rst", "tools/metadata.rst", "wss.rst"], "titles": ["Gen3 Auth Helper", "Gen3 File Class", "Welcome to Gen3 SDK\u2019s documentation!", "Gen3 Index Class", "Gen3 Jobs Class", "Gen3 Metadata Class", "Gen3 Object Class", "Gen3 Query Class", "Gen3 Submission Class", "Gen3 Tools", "DRS Download Tools", "Indexing Tools", "Metadata Tools", "Gen3 Workspace Storage"], "terms": {"class": [0, 2, 10, 11, 13], "gen3auth": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "endpoint": [0, 1, 2, 3, 4, 5, 7, 8, 13], "none": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "refresh_fil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "refresh_token": 0, "idp": 0, "client_credenti": 0, "client_scop": 0, "sourc": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "base": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 13], "authbas": 0, "us": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "request": [0, 1, 3, 5, 8, 11, 12], "implement": 0, "order": [0, 8], "support": [0, 1, 5, 8, 11], "jwt": 0, "authent": 0, "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13], "access": [0, 1, 3, 7, 10], "token": [0, 10], "from": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "provid": [0, 1, 3, 5, 7, 8, 12], "refresh": [0, 10], "file": [0, 2, 3, 4, 8, 9, 10, 11, 12, 13], "string": [0, 3, 5, 11, 13], "automat": 0, "when": [0, 3, 7, 10, 12], "thei": [0, 10], "expir": [0, 1], "paramet": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "str": [0, 1, 3, 4, 5, 7, 8, 10, 11, 12], "opt": 0, "The": [0, 1, 2, 3, 5, 8, 10, 11], "contain": [0, 2, 5, 8, 9, 10, 11, 12], "download": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "json": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "web": 0, "option": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "work": [0, 10], "workspac": [0, 2], "default": [0, 1, 3, 7, 8, 11, 12], "env": 0, "gen3_api_kei": 0, "credenti": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "set": [0, 1, 5, 10], "includ": [0, 3], "search": [0, 2, 3], "path": [0, 1, 5, 10, 11, 13], "valu": [0, 1, 3, 5, 7, 10, 11], "doe": [0, 12], "interpret": 0, "wt": [0, 10], "an": [0, 3, 6, 8, 10, 11], "accesstoken": 0, "If": [0, 1, 7, 11, 12], "can": [0, 3, 4, 8, 11, 12], "specifi": [0, 1, 3, 11, 13], "local": [0, 13], "indic": [0, 11], "environ": 0, "fenc": [0, 1], "tupl": [0, 3, 11, 12], "client_id": 0, "client_secret": 0, "oidc": 0, "client": [0, 3], "ha": [0, 11], "grant": 0, "allow": [0, 6, 8, 10, 11, 12], "obtain": [0, 10], "space": [0, 11], "separ": [0, 11], "list": [0, 1, 3, 4, 5, 7, 8, 10, 11, 13], "scope": [0, 1], "user": [0, 10, 12], "data": [0, 1, 3, 5, 7, 8, 10, 11], "openid": 0, "exampl": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "point": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "sandbox": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "common": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "while": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "profil": [0, 1, 3, 4, 5, 6, 7, 8, 10, 13], "page": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 13], "instal": [0, 2, 11], "crdc": 0, "some": [0, 2], "arbitrari": 0, "kei": [0, 3, 5, 13], "variabl": [0, 7, 8], "rather": 0, "than": [0, 5], "pass": [0, 7, 8, 10], "argument": [0, 13], "constructor": 0, "id": [0, 1, 3, 5, 10, 11], "secret": 0, "note": [0, 3, 11, 12], "should": [0, 8, 11], "never": 0, "hardcod": 0, "http": [0, 7, 11, 12], "datacommon": 0, "o": 0, "gen3_oidc_client_creds_secret": 0, "initi": [0, 10], "follow": [0, 11], "curl": [0, 2], "given": [0, 3, 4, 5, 8, 10, 12, 13], "ex": [0, 11, 12], "return": [0, 1, 3, 4, 5, 6, 7, 8, 10, 11], "respons": [0, 1, 3, 4, 5], "under": [0, 8, 13], "index": [0, 2, 5, 9], "authz": [0, 1, 2, 3, 9, 10, 11], "map": [0, 11], "get": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12, 13], "post": [0, 11], "put": 0, "delet": [0, 1, 2, 3, 5, 6, 8, 10, 11], "i": [0, 1, 2, 3, 4, 5, 8, 10, 11, 12], "els": [0, 12], "filenam": [0, 8, 10, 11, 12], "get_access_token": [0, 2], "auto": [0, 2], "within": [0, 2, 9], "5": [0, 5], "minut": 0, "get_access_token_from_wt": [0, 2], "try": 0, "fetch": 0, "namespac": [0, 12], "refresh_access_token": [0, 2], "new": [0, 3], "gen3fil": [1, 2], "auth_provid": [1, 2, 3, 4, 5, 6, 7, 8, 13], "object": [1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 13], "For": [1, 5, 6, 7, 8, 9, 11], "interact": [1, 3, 4, 5, 6, 8, 13], "manag": [1, 5, 10], "featur": [1, 6], "A": [1, 3, 4, 5, 6, 7, 8, 10, 11, 13], "servic": [1, 3, 4, 5, 6, 8, 11, 12, 13], "presign": 1, "url": [1, 2, 3, 9, 10, 11, 12, 13], "right": 1, "now": [1, 8], "instanc": [1, 3, 6, 7, 8, 9, 10], "auth": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "delete_fil": [1, 2], "guid": [1, 2, 3, 5, 6, 9, 11, 12], "method": [1, 7, 10], "deprec": 1, "delete_file_loc": [1, 2, 6], "instead": [1, 7, 11], "all": [1, 3, 4, 5, 6, 7, 8, 10, 11, 12], "locat": [1, 6], "store": [1, 3, 10], "remov": [1, 6, 11, 13], "its": [1, 3], "record": [1, 3, 5, 7, 8, 11, 12], "indexd": [1, 3, 6, 10, 11, 12], "uuid": [1, 3, 8], "text": [1, 7, 8], "result": [1, 8, 10, 11], "type": [1, 3, 4, 5, 7, 8, 10, 11, 12], "download_singl": [1, 2], "object_id": [1, 2, 9, 10], "singl": [1, 5, 8], "": [1, 4, 8, 10, 11], "uniqu": [1, 5], "get_presigned_url": [1, 2], "protocol": 1, "retriev": [1, 8, 10, 12], "give": 1, "limit": [1, 3, 5, 12], "time": [1, 8, 10, 11], "pick": 1, "avail": [1, 2, 10, 11], "queri": [1, 2, 3, 5, 8, 11, 12], "upload_fil": [1, 2], "file_nam": [1, 2, 3, 9, 10, 11], "expires_in": 1, "bucket": [1, 6], "upload": [1, 2, 3, 8, 13], "author": 1, "storag": [1, 2, 6], "s3": [1, 10, 11], "az": 1, "isn": 1, "t": [1, 5, 11], "int": [1, 3, 5, 7, 8, 10, 11, 12], "amount": [1, 9], "second": [1, 4], "sign": 1, "datetim": [1, 10], "utcnow": 1, "Be": 1, "sure": 1, "posit": [1, 7], "integ": [1, 3, 8], "also": 1, "treat": [1, 5], "max_presigned_url_ttl": 1, "configur": 1, "must": [1, 5], "allowed_data_upload_bucket": 1, "data_upload_bucket": 1, "represent": [1, 3], "document": [1, 3], "upload_file_to_guid": [1, 2], "exist": [1, 3, 5, 6, 9, 12], "readm": 2, "python": [2, 9, 11], "github": [2, 7], "repo": 2, "setup": 2, "inform": [2, 3, 10], "along": 2, "quickstart": 2, "script": 2, "more": [2, 5, 7, 9, 10], "detail": [2, 7, 10], "about": [2, 3], "variou": 2, "function": [2, 3, 4, 5, 9, 10, 11, 12], "mostli": 2, "docstr": 2, "code": [2, 8], "helper": 2, "gen3index": [2, 3], "async_create_record": [2, 3], "async_get_record": [2, 3], "async_get_records_from_checksum": [2, 3], "async_get_records_on_pag": [2, 3], "async_get_with_param": [2, 3], "async_query_url": [2, 3], "async_update_record": [2, 3], "create_blank": [2, 3], "create_new_vers": [2, 3], "create_record": [2, 3], "delete_record": [2, 3, 8], "get_all_record": [2, 3], "get_guids_prefix": [2, 3], "get_latest_vers": [2, 3], "get_record": [2, 3], "get_record_doc": [2, 3], "get_records_on_pag": [2, 3], "get_stat": [2, 3], "get_url": [2, 3], "get_valid_guid": [2, 3], "get_vers": [2, 3, 4, 5], "get_with_param": [2, 3], "is_healthi": [2, 3, 4, 5], "query_url": [2, 3], "update_blank": [2, 3], "update_record": [2, 3], "job": 2, "gen3job": [2, 4, 10], "async_run_job_and_wait": [2, 4], "create_job": [2, 4], "get_output": [2, 4], "get_statu": [2, 4], "list_job": [2, 4], "metadata": [2, 3, 6, 9, 11], "gen3metadata": [2, 5], "async_cr": [2, 5], "async_create_alias": [2, 5], "async_delete_alia": [2, 5], "async_delete_alias": [2, 5], "async_get": [2, 5], "async_get_alias": [2, 5], "async_upd": [2, 5], "async_update_alias": [2, 5], "batch_creat": [2, 5], "creat": [2, 3, 4, 5, 6, 8, 10, 11], "create_alias": [2, 5], "create_index_key_path": [2, 5], "delete_alia": [2, 5], "delete_alias": [2, 5], "delete_index_key_path": [2, 5], "get_alias": [2, 5], "get_index_key_path": [2, 5], "updat": [2, 3, 5, 10, 11], "update_alias": [2, 5], "gen3object": [2, 6], "delete_object": [2, 6], "gen3queri": [2, 7], "graphql_queri": [2, 7], "raw_data_download": [2, 7], "submiss": 2, "gen3submiss": [2, 8], "create_program": [2, 8], "create_project": [2, 8], "delete_nod": [2, 8], "delete_program": [2, 8], "delete_project": [2, 8], "export_nod": [2, 8], "export_record": [2, 8], "get_dictionary_al": [2, 8], "get_dictionary_nod": [2, 8], "get_graphql_schema": [2, 8], "get_program": [2, 8], "get_project_dictionari": [2, 8], "get_project_manifest": [2, 8], "get_project": [2, 8], "open_project": [2, 8], "submit_fil": [2, 8], "submit_record": [2, 8], "tool": 2, "dr": [2, 9], "downloadmanag": [2, 9, 10], "cache_hosts_wts_token": [2, 9, 10], "get_fresh_token": [2, 9, 10], "resolve_object": [2, 9, 10], "user_access": [2, 9, 10], "downloadstatu": [2, 9, 10], "statu": [2, 4, 9, 10], "start_tim": [2, 9, 10], "end_tim": [2, 9, 10], "object_typ": [2, 9, 10], "hostnam": [2, 9, 10], "file_s": [2, 9, 10, 11], "updated_tim": [2, 9, 10], "created_tim": [2, 9, 10], "access_method": [2, 9, 10], "children": [2, 9, 10], "_manag": [2, 9, 10], "pprint": [2, 9, 10], "manifest": [2, 8, 9, 10, 11, 12], "md5sum": [2, 9, 10], "commons_url": [2, 9, 10, 11, 12], "create_object_list": [2, 9, 10], "load": [2, 9, 10], "load_manifest": [2, 9, 10], "download_drs_object": [], "download_files_in_drs_manifest": [2, 9, 10], "list_access_in_drs_manifest": [2, 9, 10], "list_drs_object": [2, 9, 10], "list_files_in_drs_manifest": [2, 9, 10], "current_dir": [2, 9, 11], "indexd_record_page_s": [2, 9, 11], "max_concurrent_request": [2, 9, 11, 12], "tmp_folder": [2, 9, 11], "async_download_object_manifest": [2, 9, 11], "size": [2, 3, 9, 10, 11], "md5": [2, 3, 9, 11], "acl": [2, 3, 9, 11], "prev_guid": [2, 9, 11], "threadcontrol": [2, 9, 11], "delete_all_guid": [2, 9, 11], "index_object_manifest": [2, 9, 11], "verifi": [2, 9], "async_verify_object_manifest": [2, 9, 11], "ingest": [2, 9], "column_to_use_as_guid": [2, 9, 12], "guid_type_for_indexed_file_object": [2, 9, 12], "guid_type_for_non_indexed_file_object": [2, 9, 12], "async_ingest_metadata_manifest": [2, 9, 12], "async_query_urls_from_indexd": [2, 9, 12], "gen3wsstorag": [2, 13], "copi": [2, 13], "download_url": [2, 13], "l": [2, 13], "ls_path": [2, 13], "rm": [2, 13], "rm_path": [2, 13], "upload_url": [2, 13], "modul": [2, 10, 11], "service_loc": [3, 4, 5], "public": [3, 5], "read": [3, 5, 11], "onli": [3, 5, 7, 8, 10, 11], "necessari": [3, 5], "basic": [3, 11, 12], "cred": 3, "async": [3, 4, 5, 9, 11, 12], "hash": [3, 11], "did": 3, "baseid": 3, "urls_metadata": 3, "version": [3, 4, 5], "_ssl": [3, 4, 5], "asynchron": [3, 4, 5], "dict": [3, 4, 5, 10, 11, 12], "eg": 3, "ab167e49d25b488939b1ede42752458b": 3, "associ": [3, 5], "made": 3, "where": [3, 5, 11, 12], "you": [3, 8, 11], "control": 3, "rbac": 3, "name": [3, 4, 8, 10, 11, 12, 13], "addit": [3, 5, 10, 11], "entri": [3, 11], "attach": [3, 5], "each": [3, 8, 10, 11], "group": 3, "previou": [3, 11], "checksum": [3, 10], "checksum_typ": 3, "match": [3, 5, 12], "param": [3, 5, 8, 10], "correspond": 3, "suppli": 3, "need": [3, 7, 10, 11], "handl": [3, 10], "hash_typ": 3, "whether": [3, 4, 5, 8, 11, 12], "ssl": [3, 4, 5], "pattern": [3, 12], "against": [3, 7, 8, 11, 12], "kwarg": [3, 4, 5], "bodi": 3, "dictionari": [3, 4, 5, 7, 8], "format": [3, 5, 8, 11], "blank": 3, "add": [3, 5], "sinc": 3, "content": [3, 13], "immut": 3, "want": [3, 8], "chang": [3, 11], "That": 3, "field": [3, 5, 7, 11, 12], "old": 3, "ad": 3, "least": 3, "one": [3, 5, 10, 11], "suffici": 3, "good": 3, "idea": 3, "number": [3, 7, 8, 11, 12], "noth": [3, 6], "dist_resolut": 3, "true": [3, 4, 5, 6, 7, 8, 10, 11, 12], "alia": [3, 5], "distribut": 3, "identifi": [3, 5, 9, 11], "boolean": 3, "we": [3, 11], "pagin": 3, "fals": [3, 5, 6, 10, 11], "start": [3, 4, 7, 8, 10], "prefix": 3, "rtype": 3, "has_vers": 3, "latest": 3, "exclud": 3, "without": [3, 5], "repres": [3, 5, 10], "info": [3, 11], "algorithm": 3, "count": 3, "valid": [3, 7], "file_st": 3, "like": [3, 5, 9, 11, 12], "signpost": 3, "healthi": [3, 4, 5], "rev": 3, "revis": 3, "simpl": 3, "consist": 3, "mechan": 3, "dispatch": 4, "job_nam": 4, "job_input": 4, "wait": 4, "output": [4, 5, 11, 12], "Will": [4, 7, 10], "sleep": 4, "linear": 4, "delai": 4, "until": [4, 10], "done": 4, "1": [4, 5, 8, 10, 11], "global": [4, 5], "input": [4, 10, 11], "job_id": 4, "previous": 4, "complet": [4, 11], "bool": [4, 5, 8, 10, 11, 12], "md": [5, 7, 10, 12], "admin_endpoint_suffix": 5, "admin": [5, 11], "alias": 5, "overwrit": 5, "what": 5, "end": [5, 10], "up": [5, 9], "blob": [5, 7], "asyncron": 5, "altern": [5, 11], "merg": 5, "AND": 5, "descript": 5, "metadata_list": 5, "specif": [5, 8, 11, 12], "expect": [5, 9, 11], "anoth": 5, "databas": 5, "return_full_metadata": 5, "10": [5, 7, 11], "offset": [5, 7], "0": [5, 7, 8, 11], "use_agg_md": 5, "off": 5, "logic": [5, 12], "filter": [5, 7], "b": [5, 11], "2": [5, 11], "have": [5, 11], "ar": [5, 7, 8, 9, 10, 11], "alwai": 5, "nest": 5, "c": [5, 11], "3": [5, 11], "same": [5, 11, 13], "whose": 5, "ani": [5, 10, 11], "But": 5, "differ": 5, "33": 5, "d": 5, "4": [5, 11], "e": [5, 10], "won": 5, "333": 5, "defin": [5, 8, 10], "api": [5, 8, 11], "just": [5, 11, 12], "max": 5, "num": 5, "OR": 5, "level": 6, "current": [6, 8, 10], "system": [6, 7, 8, 9], "elasticsearch": 7, "query_str": 7, "execut": [7, 8, 11], "graphql": [7, 8], "query_txt": [7, 8], "syntax": 7, "see": [7, 10, 11], "com": 7, "uc": 7, "cdi": 7, "guppi": 7, "master": 7, "doc": [7, 10], "data_typ": 7, "my_index": 7, "my_field": 7, "first": [7, 8], "filter_object": 7, "sort_object": 7, "verbos": [7, 8], "row": [7, 8, 11, 12], "sort": 7, "equal": 7, "respect": 7, "complex": 7, "appli": 7, "One": 7, "unaccess": 7, "regular": 7, "tier": 7, "mode": 7, "subject": [7, 8], "50": 7, "vital_statu": 7, "submitter_id": 7, "aliv": 7, "asc": 7, "sort_field": 7, "raw": [7, 11], "project_id": [7, 8], "my_program": 7, "my_project": 7, "submit": [8, 11], "export": [8, 10], "sheepdog": 8, "through": [8, 11], "peregrin": 8, "sub": 8, "program": [8, 11], "project": [8, 11], "dcf": 8, "node_nam": 8, "batch_siz": 8, "100": [8, 11], "node": 8, "how": [8, 11], "mani": [8, 11], "print": [8, 10], "progress": [8, 10], "log": [8, 10, 11, 12], "ccle": 8, "demograph": 8, "ordered_node_list": 8, "revers": 8, "graph": 8, "experi": 8, "empti": [8, 11], "uuid1": 8, "uuid2": 8, "node_typ": 8, "fileformat": 8, "which": [8, 10], "belong": 8, "either": 8, "tsv": [8, 11, 12], "screen": 8, "sampl": [8, 10], "ccle_sample_nod": 8, "d70b41b9": 8, "6f90": 8, "4714": 8, "8420": 8, "e043ab8b77b9": 8, "ccle_one_record": 8, "entir": 8, "schema": 8, "run": [8, 11], "introspect": 8, "regist": 8, "mark": 8, "open": [8, 10, 11], "mean": 8, "etc": 8, "max_tri": 8, "retri": 8, "fail": [8, 10], "chunk_siz": 8, "30": 8, "row_offset": 8, "spreadsheet": 8, "multipl": [8, 11], "csv": [8, 11, 12], "xlsx": 8, "worksheet": 8, "skip": 8, "data_spreadsheet": 8, "arrai": 8, "action": [9, 11], "These": 9, "broken": 9, "broad": 9, "categori": 9, "task": 9, "relat": 9, "persist": 9, "Such": 9, "mai": [9, 11], "involv": 9, "assign": 9, "everi": [9, 11], "alreadi": 9, "larg": 9, "most": 9, "util": 9, "capabl": 9, "make": [9, 11], "effici": 9, "main": 10, "datafil": 10, "manifest_1": 10, "my_common": 10, "org": 10, "gen3": [10, 11, 12], "my_credenti": 10, "howto": 10, "drsdownload": 10, "drs_download": 10, "download_list": 10, "show_progress": 10, "assist": 10, "minimum": 10, "interest": 10, "object_list": 10, "host": 10, "It": 10, "possibl": 10, "save_directori": 10, "unpack_packag": 10, "delete_unpacked_packag": 10, "directori": [10, 11], "call": [10, 13], "case": 10, "error": [10, 11, 12], "continu": 10, "save": 10, "show": 10, "bar": 10, "disabl": 10, "unpack": 10, "packag": 10, "after": 10, "them": [10, 11], "drs_hostnam": 10, "known": 10, "otherwis": 10, "success": 10, "resolv": 10, "permiss": 10, "wai": 10, "determin": [10, 11, 12], "reason": 10, "pend": 10, "objectid": 10, "datamanag": 10, "occur": 10, "attribut": [10, 11], "drsobjecttyp": 10, "unknown": 10, "factori": 10, "popul": [10, 12], "server": 10, "requir": 10, "byte": 10, "timestamp": 10, "last": 10, "g": 10, "child": 10, "bundl": 10, "self": 10, "indent": 10, "pretti": 10, "In": 10, "similar": 10, "linux": 10, "tree": 10, "command": [10, 11], "typic": 10, "discoveri": 10, "cach": 10, "files": 10, "static": 10, "bownload": 10, "successfulli": 10, "pars": [10, 11, 12, 13], "output_dir": 10, "conveni": 10, "infil": 10, "wrapper": 10, "cli": 10, "process": 11, "coroutin": 11, "asyncio": [11, 12], "librari": 11, "comma": 11, "header": 11, "download_manifest": 11, "per": [11, 12], "maximum": [11, 12], "desir": 11, "concurr": [11, 12], "across": 11, "thread": 11, "folder": 11, "place": 11, "temporari": 11, "write": 11, "safe": 11, "so": 11, "To": 11, "workaround": 11, "concat": 11, "output_filenam": [11, 12], "num_process": 11, "24": [11, 12], "input_manifest": 11, "python_subprocess_command": 11, "root": [11, 12], "domain": [11, 12], "live": [11, 12], "parallel": 11, "hit": 11, "total": 11, "help": 11, "everyth": 11, "attempt": 11, "By": 11, "someth": 11, "maco": 11, "x": 11, "python3": 11, "tab": 11, "session": 11, "column": [11, 12], "shown": 11, "below": 11, "255e396f": 11, "f1f8": 11, "11e9": 11, "9a07": 11, "0a80fada099c": 11, "473d83400bc1bc9dc635e334faddf33c": 11, "363455714": 11, "pdcdatastor": 11, "test1": 11, "0a80fada098c": 11, "473d83400bc1bc9dc635e334faddd33c": 11, "343434344": 11, "test2": 11, "0a80fada097c": 11, "473d83400bc1bc9dc635e334fadd433c": 11, "543434443": 11, "phs0001": 11, "phs0002": 11, "test3": 11, "0a80fada096c": 11, "test4": 11, "0a80fada010c": 11, "473d83400bc1bc9dc635e334fadde33c": 11, "test5": 11, "index_manifest": 11, "usag": 11, "py": 11, "giangb": 11, "planx": 11, "pla": 11, "net": 11, "manifest_fil": [11, 12], "path_to_manifest": 11, "replace_url": 11, "thread_num": 11, "api_kei": 11, "processed_fil": 11, "num_total_fil": 11, "synchron": 11, "warn": 11, "IF": 11, "know": 11, "THE": 11, "implic": 11, "manifest_file_delimit": [11, 12], "submit_additional_metadata_column": 11, "force_metadata_columns_even_if_empti": 11, "loop": 11, "password": [11, 12], "flag": 11, "replac": 11, "delimit": 11, "forc": 11, "creation": 11, "even": 11, "enabl": 11, "illustr": 11, "columna": 11, "columnb": 11, "columnc": 11, "dataa": 11, "datab": 11, "guid_exampl": 11, "md5_hash": 11, "fieldnam": 11, "There": 11, "those": 11, "abov": 11, "overrid": [11, 12], "assum": 11, "behavior": 11, "simpli": 11, "manifest_row_pars": [11, 12], "custom": 11, "import": 11, "verify_manifest": 11, "def": 11, "_get_authz_from_row": 11, "strip": 11, "parser": [11, 12], "verify_object_manifest": 11, "verif": 11, "error_nam": 11, "value_from_manifest": 11, "actual": 11, "value_from_indexd": 11, "93d9af72": 11, "b0f1": 11, "450c": 11, "a5c6": 11, "7d3d8d2083b4": 11, "dev": 11, "test": 11, "_get_acl_from_row": 11, "_get_file_name_from_row": 11, "_get_file_size_from_row": 11, "_get_guid_from_row": 11, "_get_md5_from_row": 11, "_get_urls_from_row": 11, "1692675811": [], "9771066": [], "indexd_field": [11, 12], "func_to_parse_row": [11, 12], "delimet": [11, 12], "metdata": 12, "ingest_manifest": 12, "NOT": 12, "guid_from_fil": 12, "_get_guid_for_row": 12, "indexed_file_object_guid": 12, "_query_for_associated_indexd_record_guid": 12, "guid_for_row": 12, "elsewher": 12, "metadata_sourc": 12, "1692675812": [], "3144128": [], "get_guid_from_fil": 12, "metadata_typ": 12, "dbgap": 12, "usual": 12, "fill": 12, "_guid_typ": 12, "is_indexed_file_object": 12, "lock": 12, "semaphor": 12, "semaphon": 12, "ammount": 12, "connect": 12, "wss": 13, "src_urlstr": 13, "dest_urlstr": 13, "appropri": 13, "src_w": 13, "src_wskei": 13, "dest_path": 13, "disk": 13, "w": 13, "wskei": 13, "ws_urlstr": 13, "form": 13, "src_path": 13, "dest_w": 13, "dest_wskei": 13, "1692676927": [], "2291234": [], "6143494": [], "1692716275": [], "1734753": [], "577429": [], "1692716527": [], "4222114": [], "9511294": [], "1692717039": [], "3338752": [], "744264": [], "1692741377": [], "0982177": [], "4559627": [], "1692743380": [], "4060478": [], "7860734": [], "1692743691": [], "983341": [], "1692743692": [], "4543839": [], "1692825679": [], "249731": [], "5510318": [], "1692886743": [], "381985": [], "8074749": [], "1693592991": [], "493957": [], "9576306": [], "1693593902": [], "1950202": [], "507454": [], "1696860505": [], "0205865": [], "4065857": [], "1696863250": [], "490177": [], "780603": [], "1696863654": [], "490772": [], "8764913": [], "1696866574": [], "146243": [], "4969604": [], "1696867172": [], "15485": [], "4488156": [], "1696870997": [], "41439": [], "7891934": [], "1696874363": [], "5903769": [], "1696874364": [], "0760994": [], "1696874786": [], "0779042": [], "4368396": [], "1696875823": [], "7846825": [], "1696875824": [], "2559378": [], "1696877990": [], "9968846": [], "1696877991": [], "3616166": [], "1696878184": [], "6719804": [], "1696878185": [], "1095488": [], "1696878605": [], "0427673": [], "4048421": [], "1696885653": [], "7007155": [], "1696885654": [], "1520922": [], "1697467909": [], "0874708": [], "51657": [], "1697484656": [], "68711": [], "1697484657": [], "1308327": [], "1700001291": [], "6339526": [], "9630976": [], "1700002025": [], "294231": [], "5915642": [], "1700004267": [], "4130003": [], "8317993": [], "1700005111": [], "074543": [], "4001298": [], "1700005642": [], "8724742": [], "1700005643": [], "1597712": [], "1700499325": [], "4715705": [], "7661629": [], "1700591014": [], "4958894": [], "8457959": [], "1700592493": [], "8351357": [], "1700592494": [], "1116993": [], "1700678708": [], "9883742": [], "1700678709": [], "2699912": [], "1700678999": [], "9725351": [], "1700679000": [], "272037": [], "1701839488": 11, "6993823": 11, "1701839489": 12, "0258799": 12}, "objects": {"gen3.auth": [[0, 0, 1, "", "Gen3Auth"]], "gen3.auth.Gen3Auth": [[0, 1, 1, "", "curl"], [0, 1, 1, "", "get_access_token"], [0, 1, 1, "", "get_access_token_from_wts"], [0, 1, 1, "", "refresh_access_token"]], "gen3.file": [[1, 0, 1, "", "Gen3File"]], "gen3.file.Gen3File": [[1, 1, 1, "", "delete_file"], [1, 1, 1, "", "delete_file_locations"], [1, 1, 1, "", "download_single"], [1, 1, 1, "", "get_presigned_url"], [1, 1, 1, "", "upload_file"], [1, 1, 1, "", "upload_file_to_guid"]], "gen3.index": [[3, 0, 1, "", "Gen3Index"]], "gen3.index.Gen3Index": [[3, 1, 1, "", "async_create_record"], [3, 1, 1, "", "async_get_record"], [3, 1, 1, "", "async_get_records_from_checksum"], [3, 1, 1, "", "async_get_records_on_page"], [3, 1, 1, "", "async_get_with_params"], [3, 1, 1, "", "async_query_urls"], [3, 1, 1, "", "async_update_record"], [3, 1, 1, "", "create_blank"], [3, 1, 1, "", "create_new_version"], [3, 1, 1, "", "create_record"], [3, 1, 1, "", "delete_record"], [3, 1, 1, "", "get"], [3, 1, 1, "", "get_all_records"], [3, 1, 1, "", "get_guids_prefix"], [3, 1, 1, "", "get_latest_version"], [3, 1, 1, "", "get_record"], [3, 1, 1, "", "get_record_doc"], [3, 1, 1, "", "get_records"], [3, 1, 1, "", "get_records_on_page"], [3, 1, 1, "", "get_stats"], [3, 1, 1, "", "get_urls"], [3, 1, 1, "", "get_valid_guids"], [3, 1, 1, "", "get_version"], [3, 1, 1, "", "get_versions"], [3, 1, 1, "", "get_with_params"], [3, 1, 1, "", "is_healthy"], [3, 1, 1, "", "query_urls"], [3, 1, 1, "", "update_blank"], [3, 1, 1, "", "update_record"]], "gen3.jobs": [[4, 0, 1, "", "Gen3Jobs"]], "gen3.jobs.Gen3Jobs": [[4, 1, 1, "", "async_run_job_and_wait"], [4, 1, 1, "", "create_job"], [4, 1, 1, "", "get_output"], [4, 1, 1, "", "get_status"], [4, 1, 1, "", "get_version"], [4, 1, 1, "", "is_healthy"], [4, 1, 1, "", "list_jobs"]], "gen3.metadata": [[5, 0, 1, "", "Gen3Metadata"]], "gen3.metadata.Gen3Metadata": [[5, 1, 1, "", "async_create"], [5, 1, 1, "", "async_create_aliases"], [5, 1, 1, "", "async_delete_alias"], [5, 1, 1, "", "async_delete_aliases"], [5, 1, 1, "", "async_get"], [5, 1, 1, "", "async_get_aliases"], [5, 1, 1, "", "async_update"], [5, 1, 1, "", "async_update_aliases"], [5, 2, 1, "", "auth_provider"], [5, 1, 1, "", "batch_create"], [5, 1, 1, "", "create"], [5, 1, 1, "", "create_aliases"], [5, 1, 1, "", "create_index_key_path"], [5, 1, 1, "", "delete"], [5, 1, 1, "", "delete_alias"], [5, 1, 1, "", "delete_aliases"], [5, 1, 1, "", "delete_index_key_path"], [5, 2, 1, "", "endpoint"], [5, 1, 1, "", "get"], [5, 1, 1, "", "get_aliases"], [5, 1, 1, "", "get_index_key_paths"], [5, 1, 1, "", "get_version"], [5, 1, 1, "", "is_healthy"], [5, 1, 1, "", "query"], [5, 1, 1, "", "update"], [5, 1, 1, "", "update_aliases"]], "gen3.object": [[6, 0, 1, "", "Gen3Object"]], "gen3.object.Gen3Object": [[6, 1, 1, "", "delete_object"]], "gen3.query": [[7, 0, 1, "", "Gen3Query"]], "gen3.query.Gen3Query": [[7, 1, 1, "", "graphql_query"], [7, 1, 1, "", "query"], [7, 1, 1, "", "raw_data_download"]], "gen3.submission": [[8, 0, 1, "", "Gen3Submission"]], "gen3.submission.Gen3Submission": [[8, 1, 1, "", "create_program"], [8, 1, 1, "", "create_project"], [8, 1, 1, "", "delete_node"], [8, 1, 1, "", "delete_nodes"], [8, 1, 1, "", "delete_program"], [8, 1, 1, "", "delete_project"], [8, 1, 1, "", "delete_record"], [8, 1, 1, "", "delete_records"], [8, 1, 1, "", "export_node"], [8, 1, 1, "", "export_record"], [8, 1, 1, "", "get_dictionary_all"], [8, 1, 1, "", "get_dictionary_node"], [8, 1, 1, "", "get_graphql_schema"], [8, 1, 1, "", "get_programs"], [8, 1, 1, "", "get_project_dictionary"], [8, 1, 1, "", "get_project_manifest"], [8, 1, 1, "", "get_projects"], [8, 1, 1, "", "open_project"], [8, 1, 1, "", "query"], [8, 1, 1, "", "submit_file"], [8, 1, 1, "", "submit_record"]], "gen3": [[9, 3, 0, "-", "tools"]], "gen3.tools.download": [[10, 3, 0, "-", "drs_download"]], "gen3.tools.download.drs_download": [[10, 0, 1, "", "DownloadManager"], [10, 0, 1, "", "DownloadStatus"], [10, 0, 1, "", "Downloadable"], [10, 0, 1, "", "Manifest"], [10, 4, 1, "", "download_files_in_drs_manifest"], [10, 4, 1, "", "list_access_in_drs_manifest"], [10, 4, 1, "", "list_drs_object"], [10, 4, 1, "", "list_files_in_drs_manifest"]], "gen3.tools.download.drs_download.DownloadManager": [[10, 1, 1, "", "cache_hosts_wts_tokens"], [10, 1, 1, "", "download"], [10, 1, 1, "", "get_fresh_token"], [10, 1, 1, "", "resolve_objects"], [10, 1, 1, "", "user_access"]], "gen3.tools.download.drs_download.DownloadStatus": [[10, 2, 1, "", "end_time"], [10, 2, 1, "", "start_time"], [10, 2, 1, "", "status"]], "gen3.tools.download.drs_download.Downloadable": [[10, 2, 1, "", "_manager"], [10, 2, 1, "", "access_methods"], [10, 2, 1, "", "children"], [10, 2, 1, "", "created_time"], [10, 1, 1, "", "download"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 2, 1, "", "hostname"], [10, 2, 1, "", "object_id"], [10, 2, 1, "", "object_type"], [10, 1, 1, "", "pprint"], [10, 2, 1, "", "updated_time"]], "gen3.tools.download.drs_download.Manifest": [[10, 2, 1, "", "commons_url"], [10, 1, 1, "", "create_object_list"], [10, 2, 1, "", "file_name"], [10, 2, 1, "", "file_size"], [10, 1, 1, "", "load"], [10, 1, 1, "", "load_manifest"], [10, 2, 1, "", "md5sum"], [10, 2, 1, "", "object_id"]], "gen3.tools.indexing": [[11, 3, 0, "-", "download_manifest"], [11, 3, 0, "-", "index_manifest"], [11, 3, 0, "-", "verify_manifest"]], "gen3.tools.indexing.download_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "INDEXD_RECORD_PAGE_SIZE"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 2, 1, "", "TMP_FOLDER"], [11, 4, 1, "", "async_download_object_manifest"]], "gen3.tools.indexing.index_manifest": [[11, 2, 1, "", "ACLS"], [11, 2, 1, "", "AUTHZ"], [11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "GUID"], [11, 2, 1, "", "MD5"], [11, 2, 1, "", "PREV_GUID"], [11, 2, 1, "", "SIZE"], [11, 0, 1, "", "ThreadControl"], [11, 2, 1, "", "URLS"], [11, 4, 1, "", "delete_all_guids"], [11, 4, 1, "", "index_object_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, 2, 1, "", "CURRENT_DIR"], [11, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [11, 4, 1, "", "async_verify_object_manifest"]], "gen3.tools.metadata": [[12, 3, 0, "-", "ingest_manifest"]], "gen3.tools.metadata.ingest_manifest": [[12, 2, 1, "", "COLUMN_TO_USE_AS_GUID"], [12, 2, 1, "", "GUID_TYPE_FOR_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"], [12, 2, 1, "", "MAX_CONCURRENT_REQUESTS"], [12, 4, 1, "", "async_ingest_metadata_manifest"], [12, 4, 1, "", "async_query_urls_from_indexd"]], "gen3.wss": [[13, 0, 1, "", "Gen3WsStorage"]], "gen3.wss.Gen3WsStorage": [[13, 1, 1, "", "copy"], [13, 1, 1, "", "download"], [13, 1, 1, "", "download_url"], [13, 1, 1, "", "ls"], [13, 1, 1, "", "ls_path"], [13, 1, 1, "", "rm"], [13, 1, 1, "", "rm_path"], [13, 1, 1, "", "upload"], [13, 1, 1, "", "upload_url"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:module", "4": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "module", "Python module"], "4": ["py", "function", "Python function"]}, "titleterms": {"gen3": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13], "auth": 0, "helper": 0, "file": 1, "class": [1, 3, 4, 5, 6, 7, 8], "welcom": 2, "sdk": 2, "": 2, "document": 2, "indic": 2, "tabl": 2, "index": [3, 11], "job": 4, "metadata": [5, 12], "object": 6, "queri": 7, "submiss": 8, "tool": [9, 10, 11, 12], "dr": 10, "download": [10, 11], "verifi": 11, "ingest": 12, "workspac": 13, "storag": 13}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.viewcode": 1, "sphinx": 60}, "alltitles": {"Gen3 Auth Helper": [[0, "gen3-auth-helper"]], "Gen3 File Class": [[1, "gen3-file-class"]], "Welcome to Gen3 SDK\u2019s documentation!": [[2, "welcome-to-gen3-sdk-s-documentation"]], "Indices and tables": [[2, "indices-and-tables"]], "Gen3 Index Class": [[3, "gen3-index-class"]], "Gen3 Jobs Class": [[4, "gen3-jobs-class"]], "Gen3 Metadata Class": [[5, "gen3-metadata-class"]], "Gen3 Object Class": [[6, "gen3-object-class"]], "Gen3 Query Class": [[7, "gen3-query-class"]], "Gen3 Submission Class": [[8, "gen3-submission-class"]], "Gen3 Tools": [[9, "gen3-tools"]], "DRS Download Tools": [[10, "module-gen3.tools.download.drs_download"]], "Indexing Tools": [[11, "indexing-tools"]], "Download": [[11, "module-gen3.tools.indexing.download_manifest"]], "Index": [[11, "module-gen3.tools.indexing.index_manifest"]], "Verify": [[11, "module-gen3.tools.indexing.verify_manifest"]], "Metadata Tools": [[12, "metadata-tools"]], "Ingest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "Gen3 Workspace Storage": [[13, "gen3-workspace-storage"]]}, "indexentries": {"gen3auth (class in gen3.auth)": [[0, "gen3.auth.Gen3Auth"]], "curl() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.curl"]], "get_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token"]], "get_access_token_from_wts() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.get_access_token_from_wts"]], "refresh_access_token() (gen3.auth.gen3auth method)": [[0, "gen3.auth.Gen3Auth.refresh_access_token"]], "gen3file (class in gen3.file)": [[1, "gen3.file.Gen3File"]], "delete_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file"]], "delete_file_locations() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.delete_file_locations"]], "download_single() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.download_single"]], "get_presigned_url() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.get_presigned_url"]], "upload_file() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file"]], "upload_file_to_guid() (gen3.file.gen3file method)": [[1, "gen3.file.Gen3File.upload_file_to_guid"]], "gen3index (class in gen3.index)": [[3, "gen3.index.Gen3Index"]], "async_create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_create_record"]], "async_get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_record"]], "async_get_records_from_checksum() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_from_checksum"]], "async_get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_records_on_page"]], "async_get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_get_with_params"]], "async_query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_query_urls"]], "async_update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.async_update_record"]], "create_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_blank"]], "create_new_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_new_version"]], "create_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.create_record"]], "delete_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.delete_record"]], "get() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get"]], "get_all_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_all_records"]], "get_guids_prefix() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_guids_prefix"]], "get_latest_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_latest_version"]], "get_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record"]], "get_record_doc() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_record_doc"]], "get_records() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records"]], "get_records_on_page() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_records_on_page"]], "get_stats() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_stats"]], "get_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_urls"]], "get_valid_guids() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_valid_guids"]], "get_version() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_version"]], "get_versions() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_versions"]], "get_with_params() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.get_with_params"]], "is_healthy() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.is_healthy"]], "query_urls() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.query_urls"]], "update_blank() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_blank"]], "update_record() (gen3.index.gen3index method)": [[3, "gen3.index.Gen3Index.update_record"]], "gen3jobs (class in gen3.jobs)": [[4, "gen3.jobs.Gen3Jobs"]], "async_run_job_and_wait() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.async_run_job_and_wait"]], "create_job() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.create_job"]], "get_output() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_output"]], "get_status() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_status"]], "get_version() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.get_version"]], "is_healthy() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.is_healthy"]], "list_jobs() (gen3.jobs.gen3jobs method)": [[4, "gen3.jobs.Gen3Jobs.list_jobs"]], "gen3metadata (class in gen3.metadata)": [[5, "gen3.metadata.Gen3Metadata"]], "async_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create"]], "async_create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_create_aliases"]], "async_delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_alias"]], "async_delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_delete_aliases"]], "async_get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get"]], "async_get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_get_aliases"]], "async_update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update"]], "async_update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.async_update_aliases"]], "auth_provider (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.auth_provider"]], "batch_create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.batch_create"]], "create() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create"]], "create_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_aliases"]], "create_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.create_index_key_path"]], "delete() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete"]], "delete_alias() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_alias"]], "delete_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_aliases"]], "delete_index_key_path() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.delete_index_key_path"]], "endpoint (gen3.metadata.gen3metadata attribute)": [[5, "gen3.metadata.Gen3Metadata.endpoint"]], "get() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get"]], "get_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_aliases"]], "get_index_key_paths() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_index_key_paths"]], "get_version() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.get_version"]], "is_healthy() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.is_healthy"]], "query() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.query"]], "update() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update"]], "update_aliases() (gen3.metadata.gen3metadata method)": [[5, "gen3.metadata.Gen3Metadata.update_aliases"]], "gen3object (class in gen3.object)": [[6, "gen3.object.Gen3Object"]], "delete_object() (gen3.object.gen3object method)": [[6, "gen3.object.Gen3Object.delete_object"]], "gen3query (class in gen3.query)": [[7, "gen3.query.Gen3Query"]], "graphql_query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.graphql_query"]], "query() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.query"]], "raw_data_download() (gen3.query.gen3query method)": [[7, "gen3.query.Gen3Query.raw_data_download"]], "gen3submission (class in gen3.submission)": [[8, "gen3.submission.Gen3Submission"]], "create_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_program"]], "create_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.create_project"]], "delete_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_node"]], "delete_nodes() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_nodes"]], "delete_program() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_program"]], "delete_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_project"]], "delete_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_record"]], "delete_records() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.delete_records"]], "export_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_node"]], "export_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.export_record"]], "get_dictionary_all() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_all"]], "get_dictionary_node() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_dictionary_node"]], "get_graphql_schema() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_graphql_schema"]], "get_programs() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_programs"]], "get_project_dictionary() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_dictionary"]], "get_project_manifest() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_project_manifest"]], "get_projects() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.get_projects"]], "open_project() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.open_project"]], "query() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.query"]], "submit_file() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_file"]], "submit_record() (gen3.submission.gen3submission method)": [[8, "gen3.submission.Gen3Submission.submit_record"]], "gen3.tools": [[9, "module-gen3.tools"]], "module": [[9, "module-gen3.tools"], [10, "module-gen3.tools.download.drs_download"], [11, "module-gen3.tools.indexing.download_manifest"], [11, "module-gen3.tools.indexing.index_manifest"], [11, "module-gen3.tools.indexing.verify_manifest"], [12, "module-gen3.tools.metadata.ingest_manifest"]], "downloadmanager (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadManager"]], "downloadstatus (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.DownloadStatus"]], "downloadable (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Downloadable"]], "manifest (class in gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.Manifest"]], "_manager (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable._manager"]], "access_methods (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.access_methods"]], "cache_hosts_wts_tokens() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.cache_hosts_wts_tokens"]], "children (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.children"]], "commons_url (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.commons_url"]], "create_object_list() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.create_object_list"]], "created_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.created_time"]], "download() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.download"]], "download() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.download"]], "download_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.download_files_in_drs_manifest"]], "end_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.end_time"]], "file_name (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_name"]], "file_name (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_name"]], "file_size (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.file_size"]], "file_size (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.file_size"]], "gen3.tools.download.drs_download": [[10, "module-gen3.tools.download.drs_download"]], "get_fresh_token() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.get_fresh_token"]], "hostname (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.hostname"]], "list_access_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_access_in_drs_manifest"]], "list_drs_object() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_drs_object"]], "list_files_in_drs_manifest() (in module gen3.tools.download.drs_download)": [[10, "gen3.tools.download.drs_download.list_files_in_drs_manifest"]], "load() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load"]], "load_manifest() (gen3.tools.download.drs_download.manifest static method)": [[10, "gen3.tools.download.drs_download.Manifest.load_manifest"]], "md5sum (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.md5sum"]], "object_id (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_id"]], "object_id (gen3.tools.download.drs_download.manifest attribute)": [[10, "gen3.tools.download.drs_download.Manifest.object_id"]], "object_type (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.object_type"]], "pprint() (gen3.tools.download.drs_download.downloadable method)": [[10, "gen3.tools.download.drs_download.Downloadable.pprint"]], "resolve_objects() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.resolve_objects"]], "start_time (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.start_time"]], "status (gen3.tools.download.drs_download.downloadstatus attribute)": [[10, "gen3.tools.download.drs_download.DownloadStatus.status"]], "updated_time (gen3.tools.download.drs_download.downloadable attribute)": [[10, "gen3.tools.download.drs_download.Downloadable.updated_time"]], "user_access() (gen3.tools.download.drs_download.downloadmanager method)": [[10, "gen3.tools.download.drs_download.DownloadManager.user_access"]], "acls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ACLS"]], "authz (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.AUTHZ"]], "current_dir (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.CURRENT_DIR"]], "current_dir (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.CURRENT_DIR"]], "guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.GUID"]], "indexd_record_page_size (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.INDEXD_RECORD_PAGE_SIZE"]], "max_concurrent_requests (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.MAX_CONCURRENT_REQUESTS"]], "max_concurrent_requests (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.MAX_CONCURRENT_REQUESTS"]], "md5 (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.MD5"]], "prev_guid (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.PREV_GUID"]], "size (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.SIZE"]], "tmp_folder (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.TMP_FOLDER"]], "threadcontrol (class in gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.ThreadControl"]], "urls (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.URLS"]], "async_download_object_manifest() (in module gen3.tools.indexing.download_manifest)": [[11, "gen3.tools.indexing.download_manifest.async_download_object_manifest"]], "async_verify_object_manifest() (in module gen3.tools.indexing.verify_manifest)": [[11, "gen3.tools.indexing.verify_manifest.async_verify_object_manifest"]], "delete_all_guids() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.delete_all_guids"]], "gen3.tools.indexing.download_manifest": [[11, "module-gen3.tools.indexing.download_manifest"]], "gen3.tools.indexing.index_manifest": [[11, "module-gen3.tools.indexing.index_manifest"]], "gen3.tools.indexing.verify_manifest": [[11, "module-gen3.tools.indexing.verify_manifest"]], "index_object_manifest() (in module gen3.tools.indexing.index_manifest)": [[11, "gen3.tools.indexing.index_manifest.index_object_manifest"]], "column_to_use_as_guid (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.COLUMN_TO_USE_AS_GUID"]], "guid_type_for_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_INDEXED_FILE_OBJECT"]], "guid_type_for_non_indexed_file_object (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.GUID_TYPE_FOR_NON_INDEXED_FILE_OBJECT"]], "max_concurrent_requests (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.MAX_CONCURRENT_REQUESTS"]], "async_ingest_metadata_manifest() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest"]], "async_query_urls_from_indexd() (in module gen3.tools.metadata.ingest_manifest)": [[12, "gen3.tools.metadata.ingest_manifest.async_query_urls_from_indexd"]], "gen3.tools.metadata.ingest_manifest": [[12, "module-gen3.tools.metadata.ingest_manifest"]], "gen3wsstorage (class in gen3.wss)": [[13, "gen3.wss.Gen3WsStorage"]], "copy() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.copy"]], "download() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download"]], "download_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.download_url"]], "ls() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls"]], "ls_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.ls_path"]], "rm() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm"]], "rm_path() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.rm_path"]], "upload() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload"]], "upload_url() (gen3.wss.gen3wsstorage method)": [[13, "gen3.wss.Gen3WsStorage.upload_url"]]}}) \ No newline at end of file diff --git a/docs/_build/html/tools/indexing.html b/docs/_build/html/tools/indexing.html index e93f4ffa9..52f8a7a9a 100644 --- a/docs/_build/html/tools/indexing.html +++ b/docs/_build/html/tools/indexing.html @@ -380,7 +380,7 @@

                                        Indexing Tools
                                        -async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1700678999.9725351.log')[source]
                                        +async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1701839488.6993823.log')[source]

                                        Verify all file object records into a manifest csv

                                        Parameters:
                                        diff --git a/docs/_build/html/tools/metadata.html b/docs/_build/html/tools/metadata.html index a16694a81..06c2691a1 100644 --- a/docs/_build/html/tools/metadata.html +++ b/docs/_build/html/tools/metadata.html @@ -101,7 +101,7 @@

                                        Metadata Tools
                                        -async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1700679000.272037.log', get_guid_from_file=True, metadata_type=None)[source]
                                        +async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1701839489.0258799.log', get_guid_from_file=True, metadata_type=None)[source]

                                        Ingest all metadata records into a manifest csv

                                        Parameters:
                                        From 40f9e45161da10d7f27c4d40feb5c5d79acbf334 Mon Sep 17 00:00:00 2001 From: Spencer Axelrod Date: Wed, 6 Dec 2023 16:04:52 -0600 Subject: [PATCH 11/12] add test for no guid merge order --- .../expected-merged-output-manifest.tsv | 2 ++ .../input/manifest_WITHOUT_guid.tsv | 2 ++ .../input/manifest_with_guid.tsv | 2 ++ tests/merge_manifests/test_manifest_merge.py | 31 +++++++++++++++++++ 4 files changed, 37 insertions(+) create mode 100644 tests/merge_manifests/no_guid_same_md5_order/expected-merged-output-manifest.tsv create mode 100644 tests/merge_manifests/no_guid_same_md5_order/input/manifest_WITHOUT_guid.tsv create mode 100644 tests/merge_manifests/no_guid_same_md5_order/input/manifest_with_guid.tsv diff --git a/tests/merge_manifests/no_guid_same_md5_order/expected-merged-output-manifest.tsv b/tests/merge_manifests/no_guid_same_md5_order/expected-merged-output-manifest.tsv new file mode 100644 index 000000000..2255f7db1 --- /dev/null +++ b/tests/merge_manifests/no_guid_same_md5_order/expected-merged-output-manifest.tsv @@ -0,0 +1,2 @@ +guid size md5 acl authz urls metadata +dg.4503/1234abcd 1193060 2de45cf5e6b2639c98b56b679cffc119 admin phsXXXXXX.c1 AUTHZ_HERE gs://path s3://path some_data diff --git a/tests/merge_manifests/no_guid_same_md5_order/input/manifest_WITHOUT_guid.tsv b/tests/merge_manifests/no_guid_same_md5_order/input/manifest_WITHOUT_guid.tsv new file mode 100644 index 000000000..4a3373440 --- /dev/null +++ b/tests/merge_manifests/no_guid_same_md5_order/input/manifest_WITHOUT_guid.tsv @@ -0,0 +1,2 @@ +guid size md5 acl authz urls metadata + 1193060 2de45cf5e6b2639c98b56b679cffc119 phsXXXXXX.c1 admin AUTHZ_HERE gs://path s3://path some_data \ No newline at end of file diff --git a/tests/merge_manifests/no_guid_same_md5_order/input/manifest_with_guid.tsv b/tests/merge_manifests/no_guid_same_md5_order/input/manifest_with_guid.tsv new file mode 100644 index 000000000..427b44603 --- /dev/null +++ b/tests/merge_manifests/no_guid_same_md5_order/input/manifest_with_guid.tsv @@ -0,0 +1,2 @@ +guid size md5 acl authz urls metadata +dg.4503/1234abcd 1193060 2de45cf5e6b2639c98b56b679cffc119 phsXXXXXX.c1 admin AUTHZ_HERE gs://path s3://path some_data \ No newline at end of file diff --git a/tests/merge_manifests/test_manifest_merge.py b/tests/merge_manifests/test_manifest_merge.py index 62e3cae93..e6997ffc3 100644 --- a/tests/merge_manifests/test_manifest_merge.py +++ b/tests/merge_manifests/test_manifest_merge.py @@ -121,6 +121,37 @@ def test_size_mismatch(): ) +def test_no_guid_input_order(): + """ + Test merging two input manifests with that have the same md5, but one has no guid. + Ensure that the order of the input results in the same correct output. + """ + file_order_1 = [ + "tests/merge_manifests/no_guid_same_md5_order/input/manifest_with_guid.tsv", + "tests/merge_manifests/no_guid_same_md5_order/input/manifest_WITHOUT_guid.tsv", + ] + file_order_2 = [ + "tests/merge_manifests/no_guid_same_md5_order/input/manifest_WITHOUT_guid.tsv", + "tests/merge_manifests/no_guid_same_md5_order/input/manifest_with_guid.tsv", + ] + merge_bucket_manifests( + files=file_order_1, + output_manifest_file_delimiter=None, + output_manifest="merged-output-test-manifest.tsv", + ) + assert _get_tsv_data("merged-output-test-manifest.tsv") == _get_tsv_data( + "tests/merge_manifests/no_guid_same_md5_order/expected-merged-output-manifest.tsv" + ) + merge_bucket_manifests( + files=file_order_2, + output_manifest_file_delimiter=None, + output_manifest="merged-output-test-manifest.tsv", + ) + assert _get_tsv_data("merged-output-test-manifest.tsv") == _get_tsv_data( + "tests/merge_manifests/no_guid_same_md5_order/expected-merged-output-manifest.tsv" + ) + + def _get_tsv_data(manifest, delimiter="\t"): """ Returns a list of rows sorted by md5 for the given manifest. From 48d3015c3f470c8a5a7a297903f5281f79a258f8 Mon Sep 17 00:00:00 2001 From: SpencerAxelrod Date: Wed, 6 Dec 2023 22:06:07 +0000 Subject: [PATCH 12/12] Apply automatic documentation changes --- docs/_build/doctrees/environment.pickle | Bin 1553141 -> 1553141 bytes docs/_build/doctrees/tools/indexing.doctree | Bin 100101 -> 100101 bytes docs/_build/doctrees/tools/metadata.doctree | Bin 35919 -> 35919 bytes docs/_build/html/searchindex.js | 2 +- docs/_build/html/tools/indexing.html | 2 +- docs/_build/html/tools/metadata.html | 2 +- 6 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle index 2a95767eb60dd87c47926682405599feb7cec384..d3ea12c690ae101ace6e99e5900ab8dd14761d78 100644 GIT binary patch delta 11057 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 CvIXb> delta 11184 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 W2s9>9pjv^7yiJibprWE_vHt@ii8gEi diff --git a/docs/_build/doctrees/tools/indexing.doctree b/docs/_build/doctrees/tools/indexing.doctree index 8f186e13052a25e350ce58cb8b38393336c5c941..2d4155e124616d8ac46c483b0cd2907120171861 100644 GIT binary patch delta 123 zcmZqeV{7eWYuLiL)k@gXz`)qdM9<9Jz|7LZOfM%tU48QW#iHBqS}_{2@}bIZmvvx# b#Em96o!5ua65g*b3 delta 120 zcmX>Indexing Tools
                                        -async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1701839488.6993823.log')[source]
                                        +async gen3.tools.indexing.verify_manifest.async_verify_object_manifest(commons_url, manifest_file, max_concurrent_requests=24, manifest_row_parsers={'acl': <function _get_acl_from_row>, 'authz': <function _get_authz_from_row>, 'file_name': <function _get_file_name_from_row>, 'file_size': <function _get_file_size_from_row>, 'guid': <function _get_guid_from_row>, 'md5': <function _get_md5_from_row>, 'urls': <function _get_urls_from_row>}, manifest_file_delimiter=None, output_filename='verify-manifest-errors-1701900364.6706986.log')[source]

                                        Verify all file object records into a manifest csv

                                        Parameters:
                                        diff --git a/docs/_build/html/tools/metadata.html b/docs/_build/html/tools/metadata.html index 06c2691a1..35c815644 100644 --- a/docs/_build/html/tools/metadata.html +++ b/docs/_build/html/tools/metadata.html @@ -101,7 +101,7 @@

                                        Metadata Tools
                                        -async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1701839489.0258799.log', get_guid_from_file=True, metadata_type=None)[source]
                                        +async gen3.tools.metadata.ingest_manifest.async_ingest_metadata_manifest(commons_url, manifest_file, metadata_source, auth=None, max_concurrent_requests=24, manifest_row_parsers={'guid_for_row': <function _get_guid_for_row>, 'indexed_file_object_guid': <function _query_for_associated_indexd_record_guid>}, manifest_file_delimiter=None, output_filename='ingest-metadata-manifest-errors-1701900364.9645383.log', get_guid_from_file=True, metadata_type=None)[source]

                                        Ingest all metadata records into a manifest csv

                                        Parameters: