From ae4015e36d6ca1ab54df379ce2ac12f0f47b230b Mon Sep 17 00:00:00 2001 From: Ville Tuulos Date: Sat, 30 Aug 2025 14:07:15 -0700 Subject: [PATCH 1/3] add docs for branches and conditionals --- docs/index.md | 4 +- docs/metaflow/basics.md | 138 +++++++++++++++++- .../scheduling-with-airflow.md | 7 + .../scheduling-with-aws-step-functions.md | 8 + static/assets/dag-branch.png | Bin 0 -> 22188 bytes static/assets/dag-conditional.png | Bin 0 -> 22390 bytes static/assets/dag-foreach.png | Bin 0 -> 16604 bytes static/assets/dag-linear.png | Bin 0 -> 9936 bytes static/assets/dag-nested.png | Bin 0 -> 52783 bytes static/assets/dag-recursion.png | Bin 0 -> 11248 bytes 10 files changed, 152 insertions(+), 5 deletions(-) create mode 100644 static/assets/dag-branch.png create mode 100644 static/assets/dag-conditional.png create mode 100644 static/assets/dag-foreach.png create mode 100644 static/assets/dag-linear.png create mode 100644 static/assets/dag-nested.png create mode 100644 static/assets/dag-recursion.png diff --git a/docs/index.md b/docs/index.md index 0339205a..e44dc369 100644 --- a/docs/index.md +++ b/docs/index.md @@ -21,14 +21,14 @@ Metaflow makes it easy to build and manage real-life data science, AI, and ML pr ## Getting Started - [Installing Metaflow locally](getting-started/install) -- [Setting Up the Dev Stack](getting-started/devstack) ✨*New*✨ +- [Setting Up the Dev Stack](getting-started/devstack) - [Deploying Infrastructure for Metaflow](getting-started/infrastructure) - [Quickstart Tutorial](getting-started/tutorials/) ## I. Flow Development - [Introduction to Developing with Metaflow](metaflow/introduction) -- [Creating Flows](metaflow/basics) +- [Creating Flows](metaflow/basics) ✨*New: support for conditional and recursive steps*✨ - [Inspecting Flows and Results](metaflow/client) - [Managing Flows in Notebooks and Scripts](metaflow/managing-flows/introduction) - [Debugging Flows](metaflow/debugging) diff --git a/docs/metaflow/basics.md b/docs/metaflow/basics.md index 788b7937..a8247ff8 100644 --- a/docs/metaflow/basics.md +++ b/docs/metaflow/basics.md @@ -38,7 +38,7 @@ another one. Here is a graph with two linear transitions: -![](/assets/graph_linear.png) +![](/assets/dag-linear.png) The corresponding Metaflow script looks like this: @@ -109,7 +109,7 @@ transitions to two parallel steps, `a` and `b`. Any number of parallel steps are allowed. A benefit of a branch like this is performance: Metaflow can execute `a` and `b` over multiple CPU cores or over multiple instances in the cloud. -![](/assets/graph_branch.png) +![](/assets/dag-branch.png) ```python from metaflow import FlowSpec, step @@ -169,7 +169,7 @@ methods, many parallel copies of steps inside a foreach loop are executed. A foreach loop can iterate over any list like `titles` below. -![](/assets/graph_foreach.png) +![](/assets/dag-foreach.png) ```python from metaflow import FlowSpec, step @@ -217,6 +217,138 @@ task. You can nest foreaches and combine them with branches and linear steps arbitrarily. +### Conditionals + +:::info +This is a new feature in Metaflow 2.18. +::: + +Conditional branches allow you to choose *one* branch among multiple +options, based on the value of an artifact. Similar to `foreach`, you +pass a `condition` keyword argument to `self.next`, pointing to an artifact +that determines which branch to follow. Unlike regular branches, where +multiple paths can run in parallel, conditional branching ensures that +exactly one branch is executed. + +![](/assets/dag-conditional.png) + +Specify the candidate branches as a Python dictionary, similar to a +`switch` statement in many languages. Dictionary keys can be any valid type +(e.g. strings, integers, booleans), and the values must be valid `@step` methods. +The keys may be specified +via [a `Config` file](/metaflow/configuring-flows/introduction), +e.g. `{cfg.first_choice: self.head}`. Note that you must specify a key for +every possible value of the `condition` artifact. + +This flow flips a coin and executes a heads or tails branch accordingly: + +```python +from metaflow import FlowSpec, step +import random + +class CoinFlipFlow(FlowSpec): + + @step + def start(self): + self.choice = random.choice(['head', 'tails']) + self.next({"head": self.head, "tails": self.tails}, condition='choice') + + @step + def head(self): + print('Head!') + self.next(self.end) + + @step + def tails(self): + print('Tails!') + self.next(self.end) + + @step + def end(self): + print("This is the end") + +if __name__ == '__main__': + CoinFlipFlow() +``` + +Note that you don't need a join step with conditionals, since only +one branch is execution so there are no multiple sets of artifacts +to be merged. + +### Recursion + +:::info +This is a new feature in Metaflow 2.18. +::: + +While Metaflow doesn't support arbitrary loops across the flow - +the flows are *Directed* **Acyclic** *Graphs* after all - as a special +case, you can execute a single step multiple times recursively. + +![](/assets/dag-recursion.png) + +Similar to `foreach`, this construct causes a single step to spawn multiple tasks, +each producing its own artifacts. Recursion is particularly useful when you want +to *snapshot and persist artifacts* before continuing processing. + +If the flow +fails during recursion, you can use the +[`resume` command](/metaflow/debugging#how-to-use-the-resume-command) to pick up +from the latest successful iteration instead of starting over. And, you are able +to use [the Client API](/metaflow/client) to inspect any iteration afterwards - +for instance, a particular parametrization of a hyperparameter optimization loop. + +Define recursion simply by creating a conditional where one of the branches points +at the step itself. For instance, the example below implements the +following `while` loop + +```python +x = 1 +while x < 5: + x += 1 +``` + +...as the `loop` step: + +```python +from metaflow import FlowSpec, step + +class WhileFlow(FlowSpec): + + @step + def start(self): + self.next(self.loop) + + @step + def loop(self): + self.x = getattr(self, 'x', 0) + 1 + print('X is', self.x) + self.again = self.x < 5 + self.next({True: self.loop, False: self.end}, condition='again') + + @step + def end(self): + print("The final X is", self.x) + +if __name__ == '__main__': + WhileFlow() +``` + +You can interrupt the flow mid-execution and try `python while.py resume` to observe +how the execution resumes from the latest successful iteration instead of starting +again. + +### Nesting constructs + +You can combine and nest the above constructs almost arbitrarily. + +For example, the following flow orchestrates [multiple agents working in +parallel](https://outerbounds.com/blog/agentic-metaflow) using a **foreach**. +The agent state is persisted through **recursive steps**, and the agent can +continue along a suitable path through **a conditional**. + +![](/assets/dag-nested.png) + ## What should be a step? There is not a single right way of structuring code as a graph of steps but here are diff --git a/docs/production/scheduling-metaflow-flows/scheduling-with-airflow.md b/docs/production/scheduling-metaflow-flows/scheduling-with-airflow.md index 817e2b9c..02fdd5f6 100644 --- a/docs/production/scheduling-metaflow-flows/scheduling-with-airflow.md +++ b/docs/production/scheduling-metaflow-flows/scheduling-with-airflow.md @@ -43,6 +43,13 @@ multiple people, multiple workflows, or it is becoming business-critical, check section around [coordinating larger Metaflow projects](../coordinating-larger-metaflow-projects.md). +:::info Note +[Conditional and recursive steps](/metaflow/basics#conditionals) +introduced in Metaflow 2.18, are not yet supported +on Airflow deployments. Contact [the Metaflow Slack](http://slack.outerbounds.co) if +you have a use case for this feature. +::: + ## Pushing a flow to production Let's use [the flow from the section about diff --git a/docs/production/scheduling-metaflow-flows/scheduling-with-aws-step-functions.md b/docs/production/scheduling-metaflow-flows/scheduling-with-aws-step-functions.md index 1f3df50d..c8e18233 100644 --- a/docs/production/scheduling-metaflow-flows/scheduling-with-aws-step-functions.md +++ b/docs/production/scheduling-metaflow-flows/scheduling-with-aws-step-functions.md @@ -35,6 +35,14 @@ You can interact with Step Functions programmatically using the `Deployer` API - more about it here](/metaflow/managing-flows/deployer). ::: +:::info Note +[Conditional and recursive steps](/metaflow/basics#conditionals) +introduced in Metaflow 2.18, are not yet supported +on Step Functions deployments. Contact +[the Metaflow Slack](http://slack.outerbounds.co) if +you have a use case for this feature. +::: + ## Pushing a flow to production Let's use [the flow from the section about diff --git a/static/assets/dag-branch.png b/static/assets/dag-branch.png new file mode 100644 index 0000000000000000000000000000000000000000..378687a093daeca188934d5f03990e29eb60ce79 GIT binary patch literal 22188 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 LB2zA98uWhvlzZe{ literal 0 HcmV?d00001 diff --git a/static/assets/dag-nested.png b/static/assets/dag-nested.png new file mode 100644 index 0000000000000000000000000000000000000000..7b17f9f6b2e5afa72898e0d8aa3d47b73528bebf GIT binary patch literal 52783 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 amm#B7 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 literal 0 HcmV?d00001 diff --git a/static/assets/dag-recursion.png b/static/assets/dag-recursion.png new file mode 100644 index 0000000000000000000000000000000000000000..dc3ab7e5f534f3eb6a95de2d0933ab49626c896f GIT binary patch literal 11248 zcmcI~by!r<*Y3=KbR%6Oj3ClAbR*qJ3(`4scS%U6fOLa2LwAET5|UC%NH<8`(ckxd z_ul{So%1|%_SySg>s@=Fdd^z!M^$ARYz%S?004k3Co826007Ss?IJV~;(us7L;|q` zx~R)Y0IDV^_YeoF<~ni~N=ks&h&CDk1S9|;{e>VlK)5vk`Cl6VphxTh0Hj>t{~pZ+ z{r4#FJQwM|+km3Kz$lzDOoS6%>$f_tI!cNHrVe(j#%2yC=B%D}j(-6FAx{BB)6U%0 z80={Wvv(2j6sG-$5J0s5cC*of|3O@Bg=uw^RKb!C&gNh!D?2MYtq2Af3>I=Wvk*|1 zlKwAq#E~$qm8+|x02`Z!hX<<%7psG_B^w7nKR+8gCmSax3j)F7;$`n@?8##9LiZmh z|LsT0+{M({+R@e8!5;kAud#`Po2xJ_?O&q*`TZwOS8I#^&1CQLU(-TNknQgX8wV>p z+yD4Rmpr-qQh42d8y9vPGzKLt3XOMVG6 zXJHY_4L$Kh?5wO6HpCf|i;yLBsbBgszX#tZA{Z!EOAP;qGI6i_8$B4gKMcUpw!kfa_78;!9{T?=_(W6p@IG<9 zR6dXyk{KXh2CSY;pvO#{F>cYcoX~x}zP^5Paxyg)Us9u{rk0S9z`?VZB$=rIgJB(&VbI^o+v5ay@ zh0})pWX74US2-UYAogcdOj_Xf1cv+7tg+G);0eKTv9RhJ8XD^B*NLf0qP6KuiB5kv zdun=mO63mn3vpW=axF7&cV-{?hf_UwU?;us_LGw8e)CL^=T{C6=%k99x2e9d@#ocu-84$78~Mv7_g$v|aV-sLDM{IW;SbiiU;;1F47;Ny5n0wZ5#ZrK-x_ z(@ZKgv1*zuKi?GT^^4rG8lZ+{)K^(39v&=j{D2-`tSi zyBHaf7xK*$W!Rgc>%7bepO3H@3q)-!ZM#mXz!))J8rA0VTbw^fCyD zi3df<&5#aEkE*7XKw;@{ZqfyO^ya+uWIPl&FBF)YVpgO&ysi~==0xQXM zuVr95FOwE?;(*=Jwt_V-N@FZbkXPVyZB6DnIo(M4x@L7{WqDcIJQ*j)+no)nWEglh zOa_8S*?Vv9E>%V&?EThZST;MouaEUGnBvqCd+rw!&VKMS%va2ue1sS7bHl@EVZS^4 z{L)(nB9yK^#hh=MA?0cG@IvB0r)Lfh-L)#5I3e)~tk;}IB72S;U}Ix5C}$22GpfJb zleFYjOj&v7L8&%*zB8#^cB3Gsh(4;!zks*7-cubeGgybY^X3hv5eNGsU@L5cHfSs} zUy3%UyXO}j+_dhw{F~I+D3Y;z$mYgUhV8~D@qXKNy0EDs{-ql45fr zY7yTB7}N*jjr9}$?(y+j*Au{sDweNjTA+V+SKV@gmg407hQ?0_K^iEz8}~F~kwYJ} z)+%Pb8Y(nwkOSSH%9C8kW_C1?eZaVx-}sQgxXGbM!b%MGs0+%S+o1(|nmoH6J|ZTA z#E&5ntYgCI8qpKjNz06F8F-~76d@%RWrnS)JGw+o4?LQZ)E)SO;8T}3tR%}#QyXLm<+Mj zyRG;69eeW@KGY^-n!^6qYlcL76-iMNrHjdpRYo|5wd9-BcHb4u~fg> zibeM9InXgDC!;FQNq3QN|B(2Cu4KWaVQzjNqo`-45#G_!(bB?SZp6B?jKUs)1Oqs@ zA{K^FJsvO*iTsFsa`80}=s0<>fCI`vHA8zMTbT*2)esU=Sg;{w^E?w$-usFMCPnEW zPnzUxaX!=Cpbo+=Ov1h?5hX!4Dr=dda?0LxRsd0Q2|^ttKM;EJ;PT?0yj91uRwV6S z^R92F%=n1v)Z)qttYj!{STHs4rR_txu-3(khjoWL8$beM@*yK&}^Sm z9LO;62Zc_0_$wAh$AnIwH{&LseD3QMQLvHjj1vkLNr4TMXNW`B6~b8w)+hY~I+w_A z_^V_C6)c8u{wz39AzgKE5DXHfVM)1irBUIa8rP?-YSH?lb&wNIV0CWC8=xy2WXzz{ zA)aQSH;{Fr&wE+xiHpaC(pIFyoA&$LkdfV8NSYFYHFTT(ut|Ad>eXM zs!3iKRF=YwPY~Eun`l6=9=*t+=fU@7A4eHd%`&E}Mzl8wep%J|87cvk3qP z$^5i4BH6Vrh%xymB*VZ7?<{9jWKIsxH#LixVQ{!Zj>hME zo>Te>)6OFoUH#^k5Slw(6pyVKI4TEXB%lob>iLyslf2_}7dCs1AFq*>L|!(~p&bnls{H=RU4~vYUzCX5oczdwUMN3;!p)orKpl%UWYKu4!@ za}i{pjn_6~V<)d*TYgt!Mu_%N?i*Quee6nr=B8Rh3e0E_Yax(Z4&Wo!SYIO!f^oHB z)0Asc`Uw14%Q4{3dkg>iVP{H=?YV|OY%jcw3+Bp9pLd`7QoLYDOM;*&$O$L@6}pk9 zB@}K9fN=?qkynx8SMy&?f8_`#reGSP42cuU7kzeGP*5wtqI{94%m{{w(I>THRxSWKH!9# z@uKyCUiv;i{pM#C(lDIzIuNW&0VXgCM_#bFN+V5A`;kG2S4qc3PikUfp6K_)`sFhgtvyMoD9$#h%Ew}_ zJ2owTS#J_3_EpqUd`5m2KD_mVv}|oD2nnS!v7@c;=63RcX)?1Zm+x*uzZz3b^ci+A zmgL*!@`d5}Pa=7a%u|7JPQ5*<_x;G4d*4x2ouw_bZ1he9<>%+Lni?8&GY2f0VynL_qzCpWj&=qBDS;k{JI)n`jvSt|jhZ>mU0p+Gw z3Dfw+H`Ay#d~++a%^STgC)ZaQ)prwncL(Q_j{};qs}l>@#Awm-*6-Oh);t_AD5!@AcPFsru+BqJr0)`?J2Nj=JkU4C>s8BPB2K#HOdg{3=|M&o}c)-GpN{+zB z!ikfT@jo{HZjCrOMpt-A03W1RSn7j=gQQqq2T=D_kMDL0B-x*G%7o7^dVT!;qeflM zR=8AtxX z>8`W=Cu+Hc<$hcWjr8V2K*!cd&0d|GzW*(zw)f{XF#w;eLV)cPdoTW_X%{HoyLqn+-T_LMD8**PqqGoo<( z$BSuNcY9MTpS0hDC$0GznI@RM_G2ou2f}E_LFgZVyQ+V`JzY#Ac;_vfsH~64O zfppa926g`5e@N;XoHbUmtvzb&jEfb`rzuVN8Hn88ueXen zKd}Ye{IYGsc^1%NRE>q3flq}0D9UR$te|529!+O-ny$#XWizrIO3@~;M&>c|up3$a zcyWQr%)32Db@x z;Jv&|li2_p$ewf$K6R3>l;d=xSoI=i;ot9wyIQwg%tP9rc+YWictGO*VgS`IV0;Pl zsrK;w(LEM@7z%1E^-71$+?UeQS13`J%#j_yB2Up#^Ep1&%dM9bYmYm&q8;`c zmNJ5T5A!*zhtkNHQq$*d0v+^nKI^iVrd>X}m)h@p7gwJ|qUnxcGji`b^9x`7Xtfw8 z|L94f(zQ3ql|<0Wauqf4DwD`|Tv0g<$GgV>^R@QiP@ggsc0a9B)dCE4t#9hF5P3X# zSjWhm(A2Kbt#{I$u9fsrdGGtl&ge!*a%kiC{3OozVrxQHT|L*w&3iO_r8i=C-LC~+ zgEIZcy)dDfn$5?fla^yQ_TAi6kk#)dMmyexhRru)L)o6*j#el06xAYL?VFu#4r}Lg z_#TZH(G>xmcWSP0FQ}T{g`Wxz?p3lVh0UhN-CJN<33GB1G~K>Ym{|FHcX=KdUu)*c zHe0b5x+ouT2u5Ie^d{h2yc-KyI||i*uOC9~GpK9Xb^ge@3ot#GN+Dlk^@EhY<(lD2 z=)920m^XC9Cs2iSPCoSv+zgiFbKg$&TeqCKNqNRxLvm0Kj!H zz86M&b)~Jy3Tk1YEoVblDKUbfzm4h`-s6CQi z3PDJyV#n{^foIqEo&%{v+m-^_zEom!J3ZlQ$WDe| z1{nnC@$0y~#m>qRPc-0smoT)1h|X!B%43U>^7qxjI`93(RsJSH<{KK1TN}O48HtIm zKG(jHAv^CqYs-(6L7q0wOW^Zt>~20kT_@s4 zoJ_07Eq$M+r?#_4rJdb5`AH!O#en-=x6{aDenV0SkQdCL^0xV#{?T2i?brw5DFYci z`kjfej7TObigTr;by|BnyFuPqk}+229jrYo@&?3P{a`#-B0IuyFt~%A{pkko$GhSi z-V+~|@ck;F!|(i3yGplnY9?-bo{+%22=zPj`-|TSlh>ceN42X4@qU~$XIPJAfl#5g zKO0$jD+|cB#wJdZnnl0$9JO+)aeY*v=a^Pvl@qCR>^<*#2DWy{}I_ z?tuAMZA7khK3bEp9ZAjrjX{+KuTbQ=SJ|&Y34TvMFc~NwU&m3oWl>SmjJCNbD>sKE zuczktLZxJMz=#*TFg?A6RebFm0nh%&%i~8?y+wfb(xqqzl|Y~X!&p`;(Rr83BM@F( z%egqw@&4&?a`K1Qced3M9c9Et*zH^-R5oD^K*G7A2pO_#AHlr*ab6zIUW9^5b@kJv zi|mLzJj{0yFnIhuyX%Cl>HYl;g-^EEF;k-iv ziv|tNRD><_+WfZzItqBnzaS0rR4)W!(MI*RBMM1`v=eFX1NH6wH>~xkz59QK_v~W* zYV+f?mwCNCl{rLLVCGz6nR^lM68c)izA1Wt=YvDja=*dE2Q2Y>WKbmENBdel5|Zz0 zPpiE};3>=_f`O)tx%TU$3?1$0+jFWdmy*r~ns)||?|9a03fOKYbknMQe*GA|rg8Xl z$&?cv8L?`7ub2=>A=W%>u!nkd#~%!imp-8E&0P(OJIYKVJeg^|XFu+^BbH!~2OzF&b=RU7f}U=9FPLR|^>OUm&Z$$6C@6m89o9c4jyj)X#LqNzL^nZ=s_rjB z6nGxf;4bJ)hwj9F4o${Dqsl(?w zGnA?D{wxLz1K9dj-96~rl59WyT)CB)ZL`cEV*pO};$s=8InCO`y{@$Szj(L{WYy~= zZh9x@)ODF&XsP-4CsEcE;v0HSo{`C+8Uw^FoBz^Xak|2q%!xnR&GAcE;%vfxYBUgxXO{c13cxf$B`Bo&gdfLicaqV!m zXQw!<)XqxR*y+eVdopTg)@PrV zP}L=`z=O6XAdEsNAK#RNhjgmK2@-{vl))6#@o?!GvCq@pT`VTK0Buk%c6UGreEcAd zOvbTxaW``+{;#$BFdI*g@UJ(>AWBYQY0LE*WKq9jcg1W}JEV;b<7)@K%bljK-3E@v z%{V_6KK?*iaDOwx2_6FvOGBGRBo&2vNwG3-D}Db}xAZ9>uN*#?BW4QK>$9htX$rbe zUz$62F}zs^v|(E|Ll**F<-jr61nYr|*o=&h^0J3slxGq)AweOPU&)S=XIPa>W{fTA z72BEMxrkaU#1s*tn+O4_(g-eXge`J}(`&yHSSDY@PdwKH zGj2zNd3IPfO8}z03&&R44_ymB} z+A?z1bSfv1fPu4y-OCIR{2fVQNOXMiFYjk+2ClB$H&rc{62r{-xg%#PKlMf~-G`%$(r#XGFM&DN3N*S3C zBYZR?Hpv#z2rsH;c#hL z+XP#o2dlZ*nH$=(3T~9IUD;nfqeCuwp7 zB*rQb^-2!#6D1Ne0eG|Pfk^M^eM(5EQZM_hLQOQ|>@p1cNTB&88ms5H_^{8Ll>cSw zsQA$?Kqq-vHb{sO89MdW?RjHXb~be@J&|Qm@^{R~1d>(ctT)LJL``@gbOO+xGA0Z! zFn5WJI^jHSls2Ax<|Top8-{xKB6UYx-bYfb`g=)H(OecEbMdQ%*limu38$GedLFtV zt|USVL2pvV$YqHs-6?Y^X;3Z?BK=1)7W?qDJ;}6ZWs5gN9Ul*>8_UoJwKN~HfWA;= zTj|0SS3lO(POAZVmi0A!+Lo8~$>rrG?2-1qei>BeU>6j?Y>gh41=J4`p`QdVP74zd z5JW~ro)U8?RM)JH23<);Zf=^${;XV{IsJ;ZuGD|NJx)PIT~RGS>)J(W_*p}HAQ8K; zH097D!Lv3KqRLE5@M<#=`KI?^_xHjh3maQkaoyYI<&U|)tOEQEMXunPiiWQJydbpT zcQr=9_QMz+kRf-RW`i=t@MO+oc5LT{bC%|C{^7&sVgNc7>Z%Mf1n_#x-Bg>JLy(z= ziHlB{PBPcqZCYSEn3KzTewIf4GcB$bgjKJ3>f7?FssU?%Lfh)RzEAseXyD}Y&Cqqc zUeo*n+CQiRa0S#>T#;aUU_5ClGx8EnuB<@F6r46z~re5|zw zXv_}?TF5X3DcBnty8U{Qr&yYwWyP{Ih8m+>W?@W)+>%pk_BFb8Bk31v7)ofZ8cVTa zITKFMjBc@;6>&W^Ar&JtQBGZh6sY9Gum?&uIdZnSNq)iTXq?IWgyaiK#p+w)kaGA5 zDOkB2UJ0D(T4|kYmH+xJTqs%Go%V;^xk}CO;qS)EGzW{m3UAeM8M}< zxH6_qAglOx{1*-SN!Fr)mipS1s#~3Wo+6-YsDFfvH!BdMf3SVsHKT|m)~){x*_Fi{ z2PbG_VYi*?0@ER1 z62@AXt&3|F0}&Ao3Eql>^z6>8h3J7j>}?8bh{|mK+0A-)AoQg{Y9clM*KcQjJNqA( z$xpwv?WUzI!ZDMqy4+|U*pf@ug<$sfB3^Z`g=h(QZy*LXI(!PJ1_)XoQyG0zn4+Sw zvGJ=beOyqB+jZB?jy~JO?72r6KU$vedy|8ss?yS*X~-CuIz9zu4&3coM5OSxek+IL z(yFrBWtiL_?u*0tKZbXQTBep!wH>;w+CP7q?OzI=UHWKz*^P^fjSXJ2wcQVsk#-FE zzKf-nmuVD^ZIrZ8bw%HvKvwNwex7C7skvy}2>WxmFG$_?!vm_8?UpF!7PC6RivH?3 z|6(r~D9+h7s@~Qb-Qad9yltQU4pA?hmHRVXYE>Lf>Tt_Jwycy@sdJEB`fY4vWXh&N zkx2O$dobby&Cbp)CPpdE2vIVhlVe0DH-NarIn@ANnr2WApqSFT>FMdd6vcL{x>~Cy zD`!b_(d&%;60NPRHv8lYv_XoMP`OvH(9;$T@cJ(2SH4BYjoTzJZKixg6yF;-#fhk? z@k?=PHmASY4$4a?#C^5j*XU=&4x6o?eLmq=7KB0DaE}vS;I)GG=Z-3}85y~YiI6AF z26G7oRug2HG`>{w_VwvJgH+l142u8RaHBq}h^bTFY{}`6TyAAU!%J?6k*osG$qc~v z!nKF1O&^*uK5x$L=HYRjrqtIbiI(><;p-_Clg2vkVlT)3pTj^LGHIDirtf!D(EAs& z#@)t4yqu6Pv*a;)8HGIsO>K_yXdqzu90t2S1wVG*EpE%hPXXQ?}| z56ZVr%8MenNit`%5Qwto+Za?_l|3HUal1j6(bwnI8XJemoG<`Ofb8NRayx=*>~7w6 z#N$qdpM_W2YZx%evs*$6sdU(N^P`jk;o8J`SjR#rKHRl4^Y521)9>-VMfeLqExbD zRM|k6{-Ca{dAuVXzx+1RbVVubqf9*AO5&;Pq=Nwg^IM39PVCh$;FrP<`m?vI{ncN; z6Zf%us6JxuusD?1h!kVNsdLYQ_jW%+9&mzEUM|MH3wW$HyeVzC zqu3eq*zru45E@&Z>4!_>!_O68%u+Vu@d>lp&3y5S>wF~BCqj9T zyCQS_a2Udad8Rc!ir)FWRbBq?a>y-1_OJ05>Mi`kzqZ2b|J;RpUGIBT`$fjs*W8jE z>q%p8G9lK(cMhw8=>knk`h%$F+;4`*TYjygu+B!X?akAe)hWOaT>y@`;xcCvV(Kq7_J0f+L8hpZ@ z--Hy?AFt*NP*u2}4y$71>NDt6>S;?YrsQ9Wmqn3Na3Zr?g!et93$n@0(0`~P=)#cx z_dYhqSQFqkz7LM(RFViBJV*lPAtg!yfT7|* z4Ybhx&|qNB=IeNZ$gv^2%#9rKhYVz+wnV z8WM7JodN+c%5Qy@jY(u7AiwQ<;9QAZNt$ph8%3X9142Tgy-%(% zm~>PvNwuTR?*o3lHAB5Q6B<%It;_~@GSiP&&h#+j773mFaEN0@3U6fUg!-N!XZdg zFJ^~_3p%973}uOw$qG*SkY-Txr67#(uLf`Z8F0y<8Y)tOW4L;owq zI|)Vz@koqz+5gG>g5My-fd8kVi91{Ol<_~w9&!`{X{0HG&G1(r*o}#}l?(&(`u^$t z(1;OtO3#;Aa^-&#L=wb|IslU4{}}L?5y)UoDxS=L^lXSL#0MCL^Di{84g&eCT)>9! zAH5+$x_Ax3qN4w&K&(L^F}2)g9skj{gT=;C2P?v1ikm4s37{{o}kqUHbq literal 0 HcmV?d00001 From d72e30dc09de9698fbdc388f6394c02f02313825 Mon Sep 17 00:00:00 2001 From: Ville Tuulos Date: Sat, 30 Aug 2025 14:16:43 -0700 Subject: [PATCH 2/3] update api docs --- docs/api/S3.ipynb | 372 ++++++++--------- docs/api/S3.md | 28 +- docs/api/argoevent.ipynb | 48 +-- docs/api/cards.ipynb | 322 +++++++-------- docs/api/cards.md | 48 +-- docs/api/client.ipynb | 378 +++++++++--------- docs/api/client.md | 46 +-- docs/api/current.ipynb | 238 +++++------ docs/api/flow-decorators/conda_base.ipynb | 22 +- docs/api/flow-decorators/conda_base.md | 2 +- docs/api/flow-decorators/project.ipynb | 26 +- docs/api/flow-decorators/project.md | 2 + docs/api/flow-decorators/schedule.ipynb | 18 +- docs/api/flow-decorators/trigger.ipynb | 26 +- docs/api/flow-decorators/trigger.md | 2 +- .../flow-decorators/trigger_on_finish.ipynb | 26 +- docs/api/flow-decorators/trigger_on_finish.md | 2 +- docs/api/flowspec.ipynb | 142 +++---- docs/api/flowspec.md | 32 +- docs/api/runner.ipynb | 284 ++++++------- docs/api/runner.md | 55 +-- docs/api/step-decorators/batch.ipynb | 22 +- docs/api/step-decorators/batch.md | 2 +- docs/api/step-decorators/card.ipynb | 26 +- docs/api/step-decorators/card.md | 2 +- docs/api/step-decorators/catch.ipynb | 18 +- docs/api/step-decorators/conda.ipynb | 22 +- docs/api/step-decorators/conda.md | 2 +- docs/api/step-decorators/environment.ipynb | 18 +- docs/api/step-decorators/kubernetes.ipynb | 32 +- docs/api/step-decorators/kubernetes.md | 12 +- docs/api/step-decorators/pypi.ipynb | 18 +- docs/api/step-decorators/resources.ipynb | 22 +- docs/api/step-decorators/resources.md | 2 +- docs/api/step-decorators/retry.ipynb | 18 +- docs/api/step-decorators/secrets.ipynb | 23 +- docs/api/step-decorators/secrets.md | 3 +- docs/api/step-decorators/step.ipynb | 22 +- docs/api/step-decorators/step.md | 2 +- docs/api/step-decorators/timeout.ipynb | 18 +- 40 files changed, 1215 insertions(+), 1188 deletions(-) diff --git a/docs/api/S3.ipynb b/docs/api/S3.ipynb index 1580ddb6..3d430fc7 100644 --- a/docs/api/S3.ipynb +++ b/docs/api/S3.ipynb @@ -24,10 +24,10 @@ "id": "267ce6f4", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.364067Z", - "iopub.status.busy": "2024-07-25T06:16:55.363954Z", - "iopub.status.idle": "2024-07-25T06:16:55.632670Z", - "shell.execute_reply": "2024-07-25T06:16:55.632359Z" + "iopub.execute_input": "2025-08-30T21:15:32.992870Z", + "iopub.status.busy": "2025-08-30T21:15:32.992750Z", + "iopub.status.idle": "2025-08-30T21:15:33.209177Z", + "shell.execute_reply": "2025-08-30T21:15:33.208899Z" } }, "outputs": [], @@ -55,10 +55,10 @@ "id": "be77093e", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.635239Z", - "iopub.status.busy": "2024-07-25T06:16:55.635039Z", - "iopub.status.idle": "2024-07-25T06:16:55.655916Z", - "shell.execute_reply": "2024-07-25T06:16:55.655612Z" + "iopub.execute_input": "2025-08-30T21:15:33.211275Z", + "iopub.status.busy": "2025-08-30T21:15:33.211127Z", + "iopub.status.idle": "2025-08-30T21:15:33.230516Z", + "shell.execute_reply": "2025-08-30T21:15:33.230256Z" } }, "outputs": [ @@ -66,9 +66,9 @@ "data": { "text/html": [ "\n", - "

class S3 tmproot='.', bucket=None, prefix=None, run=None, s3root=None[source]

metaflow

The Metaflow S3 client.

This object manages the connection to S3 and a temporary diretory that is used
to download objects. Note that in most cases when the data fits in memory, no local
disk IO is needed as operations are cached by the operating system, which makes
operations fast as long as there is enough memory available.

The easiest way is to use this object as a context manager:
```
with S3() as s3:
    data = [obj.blob for obj in s3.get_many(urls)]
print(data)
```
The context manager takes care of creating and deleting a temporary directory
automatically. Without a context manager, you must call `.close()` to delete
the directory explicitly:
```
s3 = S3()
data = [obj.blob for obj in s3.get_many(urls)]
s3.close()
```
You can customize the location of the temporary directory with `tmproot`. It
defaults to the current working directory.

To make it easier to deal with object locations, the client can be initialized
with an S3 path prefix. There are three ways to handle locations:

1. Use a `metaflow.Run` object or `self`, e.g. `S3(run=self)` which
   initializes the prefix with the global `DATATOOLS_S3ROOT` path, combined
   with the current run ID. This mode makes it easy to version data based
   on the run ID consistently. You can use the `bucket` and `prefix` to
   override parts of `DATATOOLS_S3ROOT`.

2. Specify an S3 prefix explicitly with `s3root`,
   e.g. `S3(s3root='s3://mybucket/some/path')`.

3. Specify nothing, i.e. `S3()`, in which case all operations require
   a full S3 url prefixed with `s3://`.

Parameters
----------
tmproot : str, default: '.'
    Where to store the temporary directory.
bucket : str, optional
    Override the bucket from `DATATOOLS_S3ROOT` when `run` is specified.
prefix : str, optional
    Override the path from `DATATOOLS_S3ROOT` when `run` is specified.
run : FlowSpec or Run, optional
    Derive path prefix from the current or a past run ID, e.g. S3(run=self).
s3root : str, optional
    If `run` is not specified, use this as the S3 prefix.

\n", + "

class S3 tmproot='.', bucket=None, prefix=None, run=None, s3root=None[source]

metaflow

The Metaflow S3 client.

This object manages the connection to S3 and a temporary diretory that is used
to download objects. Note that in most cases when the data fits in memory, no local
disk IO is needed as operations are cached by the operating system, which makes
operations fast as long as there is enough memory available.

The easiest way is to use this object as a context manager:
```
with S3() as s3:
    data = [obj.blob for obj in s3.get_many(urls)]
print(data)
```
The context manager takes care of creating and deleting a temporary directory
automatically. Without a context manager, you must call `.close()` to delete
the directory explicitly:
```
s3 = S3()
data = [obj.blob for obj in s3.get_many(urls)]
s3.close()
```
You can customize the location of the temporary directory with `tmproot`. It
defaults to the current working directory.

To make it easier to deal with object locations, the client can be initialized
with an S3 path prefix. There are three ways to handle locations:

1. Use a `metaflow.Run` object or `self`, e.g. `S3(run=self)` which
   initializes the prefix with the global `DATATOOLS_S3ROOT` path, combined
   with the current run ID. This mode makes it easy to version data based
   on the run ID consistently. You can use the `bucket` and `prefix` to
   override parts of `DATATOOLS_S3ROOT`.

2. Specify an S3 prefix explicitly with `s3root`,
   e.g. `S3(s3root='s3://mybucket/some/path')`.

3. Specify nothing, i.e. `S3()`, in which case all operations require
   a full S3 url prefixed with `s3://`.

Parameters
----------
tmproot : str, default: '.'
    Where to store the temporary directory.
bucket : str, optional
    Override the bucket from `DATATOOLS_S3ROOT` when `run` is specified.
prefix : str, optional
    Override the path from `DATATOOLS_S3ROOT` when `run` is specified.
run : FlowSpec or Run, optional
    Derive path prefix from the current or a past run ID, e.g. S3(run=self).
s3root : str, optional
    If `run` is not specified, use this as the S3 prefix.

\n", "\n", - "\n", + "\n", "\n", "\n", "\n", @@ -83,7 +83,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -101,10 +101,10 @@ "id": "a0e04313", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.658196Z", - "iopub.status.busy": "2024-07-25T06:16:55.658076Z", - "iopub.status.idle": "2024-07-25T06:16:55.660743Z", - "shell.execute_reply": "2024-07-25T06:16:55.660439Z" + "iopub.execute_input": "2025-08-30T21:15:33.232479Z", + "iopub.status.busy": "2025-08-30T21:15:33.232381Z", + "iopub.status.idle": "2025-08-30T21:15:33.234544Z", + "shell.execute_reply": "2025-08-30T21:15:33.234301Z" } }, "outputs": [ @@ -112,9 +112,9 @@ "data": { "text/html": [ "\n", - "

method S3.close (self)[source]

Delete all temporary files downloaded in this context.

\n", + "

method S3.close (self)[source]

Delete all temporary files downloaded in this context.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -123,7 +123,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -149,10 +149,10 @@ "id": "30c3afdf", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.663324Z", - "iopub.status.busy": "2024-07-25T06:16:55.663117Z", - "iopub.status.idle": "2024-07-25T06:16:55.666684Z", - "shell.execute_reply": "2024-07-25T06:16:55.666412Z" + "iopub.execute_input": "2025-08-30T21:15:33.236950Z", + "iopub.status.busy": "2025-08-30T21:15:33.236863Z", + "iopub.status.idle": "2025-08-30T21:15:33.239722Z", + "shell.execute_reply": "2025-08-30T21:15:33.239523Z" } }, "outputs": [ @@ -160,9 +160,9 @@ "data": { "text/html": [ "\n", - "

method S3.get (self, key: Union[str, metaflow.plugins.datatools.s3.s3.S3GetObject, NoneType] = None, return_missing: bool = False, return_info: bool = True) -> metaflow.plugins.datatools.s3.s3.S3Object[source]

Get a single object from S3.

Parameters
----------
key : Union[str, S3GetObject], optional, default None
    Object to download. It can be an S3 url, a path suffix, or
    an S3GetObject that defines a range of data to download. If None, or
    not provided, gets the S3 root.
return_missing : bool, default False
    If set to True, do not raise an exception for a missing key but
    return it as an `S3Object` with `.exists == False`.
return_info : bool, default True
    If set to True, fetch the content-type and user metadata associated
    with the object at no extra cost, included for symmetry with `get_many`

Returns
-------
S3Object
    An S3Object corresponding to the object requested.

\n", + "

method S3.get (self, key: Union[str, metaflow.plugins.datatools.s3.s3.S3GetObject, NoneType] = None, return_missing: bool = False, return_info: bool = True) -> metaflow.plugins.datatools.s3.s3.S3Object[source]

Get a single object from S3.

Parameters
----------
key : Union[str, S3GetObject], optional, default None
    Object to download. It can be an S3 url, a path suffix, or
    an S3GetObject that defines a range of data to download. If None, or
    not provided, gets the S3 root.
return_missing : bool, default False
    If set to True, do not raise an exception for a missing key but
    return it as an `S3Object` with `.exists == False`.
return_info : bool, default True
    If set to True, fetch the content-type and user metadata associated
    with the object at no extra cost, included for symmetry with `get_many`

Returns
-------
S3Object
    An S3Object corresponding to the object requested.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -178,7 +178,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -196,10 +196,10 @@ "id": "2bbb1e36", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.668637Z", - "iopub.status.busy": "2024-07-25T06:16:55.668562Z", - "iopub.status.idle": "2024-07-25T06:16:55.671501Z", - "shell.execute_reply": "2024-07-25T06:16:55.671249Z" + "iopub.execute_input": "2025-08-30T21:15:33.242005Z", + "iopub.status.busy": "2025-08-30T21:15:33.241917Z", + "iopub.status.idle": "2025-08-30T21:15:33.244492Z", + "shell.execute_reply": "2025-08-30T21:15:33.244292Z" } }, "outputs": [ @@ -207,9 +207,9 @@ "data": { "text/html": [ "\n", - "

method S3.get_many (self, keys: Iterable[Union[str, metaflow.plugins.datatools.s3.s3.S3GetObject]], return_missing: bool = False, return_info: bool = True) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

Get many objects from S3 in parallel.

Parameters
----------
keys : Iterable[Union[str, S3GetObject]]
    Objects to download. Each object can be an S3 url, a path suffix, or
    an S3GetObject that defines a range of data to download.
return_missing : bool, default False
    If set to True, do not raise an exception for a missing key but
    return it as an `S3Object` with `.exists == False`.
return_info : bool, default True
    If set to True, fetch the content-type and user metadata associated
    with the object at no extra cost, included for symmetry with `get_many`.

Returns
-------
List[S3Object]
    S3Objects corresponding to the objects requested.

\n", + "

method S3.get_many (self, keys: Iterable[Union[str, metaflow.plugins.datatools.s3.s3.S3GetObject]], return_missing: bool = False, return_info: bool = True) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

Get many objects from S3 in parallel.

Parameters
----------
keys : Iterable[Union[str, S3GetObject]]
    Objects to download. Each object can be an S3 url, a path suffix, or
    an S3GetObject that defines a range of data to download.
return_missing : bool, default False
    If set to True, do not raise an exception for a missing key but
    return it as an `S3Object` with `.exists == False`.
return_info : bool, default True
    If set to True, fetch the content-type and user metadata associated
    with the object at no extra cost, included for symmetry with `get_many`.

Returns
-------
List[S3Object]
    S3Objects corresponding to the objects requested.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -225,7 +225,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -243,10 +243,10 @@ "id": "64a74dcf", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.673609Z", - "iopub.status.busy": "2024-07-25T06:16:55.673501Z", - "iopub.status.idle": "2024-07-25T06:16:55.676324Z", - "shell.execute_reply": "2024-07-25T06:16:55.676093Z" + "iopub.execute_input": "2025-08-30T21:15:33.246450Z", + "iopub.status.busy": "2025-08-30T21:15:33.246369Z", + "iopub.status.idle": "2025-08-30T21:15:33.248945Z", + "shell.execute_reply": "2025-08-30T21:15:33.248737Z" } }, "outputs": [ @@ -254,9 +254,9 @@ "data": { "text/html": [ "\n", - "

method S3.get_recursive (self, keys: Iterable[str], return_info: bool = False) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

Get many objects from S3 recursively in parallel.

Parameters
----------
keys : Iterable[str]
    Prefixes to download recursively. Each prefix can be an S3 url or a path suffix
    which define the root prefix under which all objects are downloaded.
return_info : bool, default False
    If set to True, fetch the content-type and user metadata associated
    with the object.

Returns
-------
List[S3Object]
    S3Objects stored under the given prefixes.

\n", + "

method S3.get_recursive (self, keys: Iterable[str], return_info: bool = False) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

Get many objects from S3 recursively in parallel.

Parameters
----------
keys : Iterable[str]
    Prefixes to download recursively. Each prefix can be an S3 url or a path suffix
    which define the root prefix under which all objects are downloaded.
return_info : bool, default False
    If set to True, fetch the content-type and user metadata associated
    with the object.

Returns
-------
List[S3Object]
    S3Objects stored under the given prefixes.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -271,7 +271,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -289,10 +289,10 @@ "id": "62b5aa5c", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.678408Z", - "iopub.status.busy": "2024-07-25T06:16:55.678312Z", - "iopub.status.idle": "2024-07-25T06:16:55.680730Z", - "shell.execute_reply": "2024-07-25T06:16:55.680538Z" + "iopub.execute_input": "2025-08-30T21:15:33.250587Z", + "iopub.status.busy": "2025-08-30T21:15:33.250512Z", + "iopub.status.idle": "2025-08-30T21:15:33.252525Z", + "shell.execute_reply": "2025-08-30T21:15:33.252343Z" } }, "outputs": [ @@ -300,9 +300,9 @@ "data": { "text/html": [ "\n", - "

method S3.get_all (self, return_info: bool = False) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

Get all objects under the prefix set in the `S3` constructor.

This method requires that the `S3` object is initialized either with `run` or
`s3root`.

Parameters
----------
return_info : bool, default False
    If set to True, fetch the content-type and user metadata associated
    with the object.

Returns
-------
Iterable[S3Object]
    S3Objects stored under the main prefix.

\n", + "

method S3.get_all (self, return_info: bool = False) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

Get all objects under the prefix set in the `S3` constructor.

This method requires that the `S3` object is initialized either with `run` or
`s3root`.

Parameters
----------
return_info : bool, default False
    If set to True, fetch the content-type and user metadata associated
    with the object.

Returns
-------
Iterable[S3Object]
    S3Objects stored under the main prefix.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -316,7 +316,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -342,10 +342,10 @@ "id": "b00c7e64", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.682599Z", - "iopub.status.busy": "2024-07-25T06:16:55.682502Z", - "iopub.status.idle": "2024-07-25T06:16:55.685091Z", - "shell.execute_reply": "2024-07-25T06:16:55.684875Z" + "iopub.execute_input": "2025-08-30T21:15:33.254574Z", + "iopub.status.busy": "2025-08-30T21:15:33.254495Z", + "iopub.status.idle": "2025-08-30T21:15:33.256763Z", + "shell.execute_reply": "2025-08-30T21:15:33.256555Z" }, "scrolled": true }, @@ -354,9 +354,9 @@ "data": { "text/html": [ "\n", - "

method S3.list_paths (self, keys: Optional[Iterable[str]] = None) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

List the next level of paths in S3.

If multiple keys are specified, listings are done in parallel. The returned
S3Objects have `.exists == False` if the path refers to a prefix, not an
existing S3 object.

For instance, if the directory hierarchy is
```
a/0.txt
a/b/1.txt
a/c/2.txt
a/d/e/3.txt
f/4.txt
```
The `list_paths(['a', 'f'])` call returns
```
a/0.txt (exists == True)
a/b/ (exists == False)
a/c/ (exists == False)
a/d/ (exists == False)
f/4.txt (exists == True)
```

Parameters
----------
keys : Iterable[str], optional, default None
    List of paths.

Returns
-------
List[S3Object]
    S3Objects under the given paths, including prefixes (directories) that
    do not correspond to leaf objects.

\n", + "

method S3.list_paths (self, keys: Optional[Iterable[str]] = None) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

List the next level of paths in S3.

If multiple keys are specified, listings are done in parallel. The returned
S3Objects have `.exists == False` if the path refers to a prefix, not an
existing S3 object.

For instance, if the directory hierarchy is
```
a/0.txt
a/b/1.txt
a/c/2.txt
a/d/e/3.txt
f/4.txt
```
The `list_paths(['a', 'f'])` call returns
```
a/0.txt (exists == True)
a/b/ (exists == False)
a/c/ (exists == False)
a/d/ (exists == False)
f/4.txt (exists == True)
```

Parameters
----------
keys : Iterable[str], optional, default None
    List of paths.

Returns
-------
List[S3Object]
    S3Objects under the given paths, including prefixes (directories) that
    do not correspond to leaf objects.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -370,7 +370,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -388,10 +388,10 @@ "id": "9b39aa1f", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.687389Z", - "iopub.status.busy": "2024-07-25T06:16:55.687310Z", - "iopub.status.idle": "2024-07-25T06:16:55.689833Z", - "shell.execute_reply": "2024-07-25T06:16:55.689561Z" + "iopub.execute_input": "2025-08-30T21:15:33.259069Z", + "iopub.status.busy": "2025-08-30T21:15:33.258972Z", + "iopub.status.idle": "2025-08-30T21:15:33.261357Z", + "shell.execute_reply": "2025-08-30T21:15:33.261178Z" }, "scrolled": true }, @@ -400,9 +400,9 @@ "data": { "text/html": [ "\n", - "

method S3.list_recursive (self, keys: Optional[Iterable[str]] = None) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

List all objects recursively under the given prefixes.

If multiple keys are specified, listings are done in parallel. All objects
returned have `.exists == True` as this call always returns leaf objects.

For instance, if the directory hierarchy is
```
a/0.txt
a/b/1.txt
a/c/2.txt
a/d/e/3.txt
f/4.txt
```
The `list_paths(['a', 'f'])` call returns
```
a/0.txt (exists == True)
a/b/1.txt (exists == True)
a/c/2.txt (exists == True)
a/d/e/3.txt (exists == True)
f/4.txt (exists == True)
```

Parameters
----------
keys : Iterable[str], optional, default None
    List of paths.

Returns
-------
List[S3Object]
    S3Objects under the given paths.

\n", + "

method S3.list_recursive (self, keys: Optional[Iterable[str]] = None) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

List all objects recursively under the given prefixes.

If multiple keys are specified, listings are done in parallel. All objects
returned have `.exists == True` as this call always returns leaf objects.

For instance, if the directory hierarchy is
```
a/0.txt
a/b/1.txt
a/c/2.txt
a/d/e/3.txt
f/4.txt
```
The `list_paths(['a', 'f'])` call returns
```
a/0.txt (exists == True)
a/b/1.txt (exists == True)
a/c/2.txt (exists == True)
a/d/e/3.txt (exists == True)
f/4.txt (exists == True)
```

Parameters
----------
keys : Iterable[str], optional, default None
    List of paths.

Returns
-------
List[S3Object]
    S3Objects under the given paths.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -416,7 +416,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -442,10 +442,10 @@ "id": "8e76d108", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.692135Z", - "iopub.status.busy": "2024-07-25T06:16:55.692039Z", - "iopub.status.idle": "2024-07-25T06:16:55.695207Z", - "shell.execute_reply": "2024-07-25T06:16:55.694894Z" + "iopub.execute_input": "2025-08-30T21:15:33.263490Z", + "iopub.status.busy": "2025-08-30T21:15:33.263413Z", + "iopub.status.idle": "2025-08-30T21:15:33.266179Z", + "shell.execute_reply": "2025-08-30T21:15:33.265983Z" }, "scrolled": true }, @@ -454,9 +454,9 @@ "data": { "text/html": [ "\n", - "

method S3.put (self, key: Union[str, metaflow.plugins.datatools.s3.s3.S3PutObject], obj: Union[io.RawIOBase, io.BufferedIOBase, str, bytes], overwrite: bool = True, content_type: Optional[str] = None, metadata: Optional[Dict[str, str]] = None) -> str[source]

Upload a single object to S3.

Parameters
----------
key : Union[str, S3PutObject]
    Object path. It can be an S3 url or a path suffix.
obj : PutValue
    An object to store in S3. Strings are converted to UTF-8 encoding.
overwrite : bool, default True
    Overwrite the object if it exists. If set to False, the operation
    succeeds without uploading anything if the key already exists.
content_type : str, optional, default None
    Optional MIME type for the object.
metadata : Dict[str, str], optional, default None
    A JSON-encodable dictionary of additional headers to be stored
    as metadata with the object.

Returns
-------
str
    URL of the object stored.

\n", + "

method S3.put (self, key: Union[str, metaflow.plugins.datatools.s3.s3.S3PutObject], obj: Union[io.RawIOBase, io.BufferedIOBase, str, bytes], overwrite: bool = True, content_type: Optional[str] = None, metadata: Optional[Dict[str, str]] = None) -> str[source]

Upload a single object to S3.

Parameters
----------
key : Union[str, S3PutObject]
    Object path. It can be an S3 url or a path suffix.
obj : PutValue
    An object to store in S3. Strings are converted to UTF-8 encoding.
overwrite : bool, default True
    Overwrite the object if it exists. If set to False, the operation
    succeeds without uploading anything if the key already exists.
content_type : str, optional, default None
    Optional MIME type for the object.
metadata : Dict[str, str], optional, default None
    A JSON-encodable dictionary of additional headers to be stored
    as metadata with the object.

Returns
-------
str
    URL of the object stored.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -474,7 +474,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 10, @@ -492,10 +492,10 @@ "id": "ae5c6247", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.697366Z", - "iopub.status.busy": "2024-07-25T06:16:55.697267Z", - "iopub.status.idle": "2024-07-25T06:16:55.700234Z", - "shell.execute_reply": "2024-07-25T06:16:55.699996Z" + "iopub.execute_input": "2025-08-30T21:15:33.269936Z", + "iopub.status.busy": "2025-08-30T21:15:33.269853Z", + "iopub.status.idle": "2025-08-30T21:15:33.272552Z", + "shell.execute_reply": "2025-08-30T21:15:33.272353Z" } }, "outputs": [ @@ -503,9 +503,9 @@ "data": { "text/html": [ "\n", - "

method S3.put_many (self, key_objs: List[Union[Tuple[str, Union[io.RawIOBase, io.BufferedIOBase, str, bytes]], metaflow.plugins.datatools.s3.s3.S3PutObject]], overwrite: bool = True) -> List[Tuple[str, str]][source]

Upload many objects to S3.

Each object to be uploaded can be specified in two ways:

1. As a `(key, obj)` tuple where `key` is a string specifying
   the path and `obj` is a string or a bytes object.

2. As a `S3PutObject` which contains additional metadata to be
   stored with the object.

Parameters
----------
key_objs : List[Union[Tuple[str, PutValue], S3PutObject]]
    List of key-object pairs to upload.
overwrite : bool, default True
    Overwrite the object if it exists. If set to False, the operation
    succeeds without uploading anything if the key already exists.

Returns
-------
List[Tuple[str, str]]
    List of `(key, url)` pairs corresponding to the objects uploaded.

\n", + "

method S3.put_many (self, key_objs: List[Union[Tuple[str, Union[io.RawIOBase, io.BufferedIOBase, str, bytes]], metaflow.plugins.datatools.s3.s3.S3PutObject]], overwrite: bool = True) -> List[Tuple[str, str]][source]

Upload many objects to S3.

Each object to be uploaded can be specified in two ways:

1. As a `(key, obj)` tuple where `key` is a string specifying
   the path and `obj` is a string or a bytes object.

2. As a `S3PutObject` which contains additional metadata to be
   stored with the object.

Parameters
----------
key_objs : List[Union[Tuple[str, PutValue], S3PutObject]]
    List of key-object pairs to upload.
overwrite : bool, default True
    Overwrite the object if it exists. If set to False, the operation
    succeeds without uploading anything if the key already exists.

Returns
-------
List[Tuple[str, str]]
    List of `(key, url)` pairs corresponding to the objects uploaded.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -520,7 +520,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 11, @@ -538,10 +538,10 @@ "id": "d9c3ea39", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.702286Z", - "iopub.status.busy": "2024-07-25T06:16:55.702189Z", - "iopub.status.idle": "2024-07-25T06:16:55.704955Z", - "shell.execute_reply": "2024-07-25T06:16:55.704709Z" + "iopub.execute_input": "2025-08-30T21:15:33.279023Z", + "iopub.status.busy": "2025-08-30T21:15:33.278911Z", + "iopub.status.idle": "2025-08-30T21:15:33.281700Z", + "shell.execute_reply": "2025-08-30T21:15:33.281450Z" } }, "outputs": [ @@ -549,9 +549,9 @@ "data": { "text/html": [ "\n", - "

method S3.put_files (self, key_paths: List[Union[Tuple[str, Union[io.RawIOBase, io.BufferedIOBase, str, bytes]], metaflow.plugins.datatools.s3.s3.S3PutObject]], overwrite: bool = True) -> List[Tuple[str, str]][source]

Upload many local files to S3.

Each file to be uploaded can be specified in two ways:

1. As a `(key, path)` tuple where `key` is a string specifying
   the S3 path and `path` is the path to a local file.

2. As a `S3PutObject` which contains additional metadata to be
   stored with the file.

Parameters
----------
key_paths :  List[Union[Tuple[str, PutValue], S3PutObject]]
    List of files to upload.
overwrite : bool, default True
    Overwrite the object if it exists. If set to False, the operation
    succeeds without uploading anything if the key already exists.

Returns
-------
List[Tuple[str, str]]
    List of `(key, url)` pairs corresponding to the files uploaded.

\n", + "

method S3.put_files (self, key_paths: List[Union[Tuple[str, Union[io.RawIOBase, io.BufferedIOBase, str, bytes]], metaflow.plugins.datatools.s3.s3.S3PutObject]], overwrite: bool = True) -> List[Tuple[str, str]][source]

Upload many local files to S3.

Each file to be uploaded can be specified in two ways:

1. As a `(key, path)` tuple where `key` is a string specifying
   the S3 path and `path` is the path to a local file.

2. As a `S3PutObject` which contains additional metadata to be
   stored with the file.

Parameters
----------
key_paths :  List[Union[Tuple[str, PutValue], S3PutObject]]
    List of files to upload.
overwrite : bool, default True
    Overwrite the object if it exists. If set to False, the operation
    succeeds without uploading anything if the key already exists.

Returns
-------
List[Tuple[str, str]]
    List of `(key, url)` pairs corresponding to the files uploaded.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -566,7 +566,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -592,10 +592,10 @@ "id": "c7055621", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.706871Z", - "iopub.status.busy": "2024-07-25T06:16:55.706784Z", - "iopub.status.idle": "2024-07-25T06:16:55.709603Z", - "shell.execute_reply": "2024-07-25T06:16:55.709377Z" + "iopub.execute_input": "2025-08-30T21:15:33.284058Z", + "iopub.status.busy": "2025-08-30T21:15:33.283974Z", + "iopub.status.idle": "2025-08-30T21:15:33.286310Z", + "shell.execute_reply": "2025-08-30T21:15:33.286117Z" } }, "outputs": [ @@ -603,9 +603,9 @@ "data": { "text/html": [ "\n", - "

method S3.info (self, key: Optional[str] = None, return_missing: bool = False) -> metaflow.plugins.datatools.s3.s3.S3Object[source]

Get metadata about a single object in S3.

This call makes a single `HEAD` request to S3 which can be
much faster than downloading all data with `get`.

Parameters
----------
key : str, optional, default None
    Object to query. It can be an S3 url or a path suffix.
return_missing : bool, default False
    If set to True, do not raise an exception for a missing key but
    return it as an `S3Object` with `.exists == False`.

Returns
-------
S3Object
    An S3Object corresponding to the object requested. The object
    will have `.downloaded == False`.

\n", + "

method S3.info (self, key: Optional[str] = None, return_missing: bool = False) -> metaflow.plugins.datatools.s3.s3.S3Object[source]

Get metadata about a single object in S3.

This call makes a single `HEAD` request to S3 which can be
much faster than downloading all data with `get`.

Parameters
----------
key : str, optional, default None
    Object to query. It can be an S3 url or a path suffix.
return_missing : bool, default False
    If set to True, do not raise an exception for a missing key but
    return it as an `S3Object` with `.exists == False`.

Returns
-------
S3Object
    An S3Object corresponding to the object requested. The object
    will have `.downloaded == False`.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -620,7 +620,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 13, @@ -638,10 +638,10 @@ "id": "ba5e0f9b", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.711568Z", - "iopub.status.busy": "2024-07-25T06:16:55.711473Z", - "iopub.status.idle": "2024-07-25T06:16:55.714093Z", - "shell.execute_reply": "2024-07-25T06:16:55.713851Z" + "iopub.execute_input": "2025-08-30T21:15:33.288359Z", + "iopub.status.busy": "2025-08-30T21:15:33.288272Z", + "iopub.status.idle": "2025-08-30T21:15:33.290748Z", + "shell.execute_reply": "2025-08-30T21:15:33.290529Z" } }, "outputs": [ @@ -649,9 +649,9 @@ "data": { "text/html": [ "\n", - "

method S3.info_many (self, keys: Iterable[str], return_missing: bool = False) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

Get metadata about many objects in S3 in parallel.

This call makes a single `HEAD` request to S3 which can be
much faster than downloading all data with `get`.

Parameters
----------
keys : Iterable[str]
    Objects to query. Each key can be an S3 url or a path suffix.
return_missing : bool, default False
    If set to True, do not raise an exception for a missing key but
    return it as an `S3Object` with `.exists == False`.

Returns
-------
List[S3Object]
    A list of S3Objects corresponding to the paths requested. The
    objects will have `.downloaded == False`.

\n", + "

method S3.info_many (self, keys: Iterable[str], return_missing: bool = False) -> List[metaflow.plugins.datatools.s3.s3.S3Object][source]

Get metadata about many objects in S3 in parallel.

This call makes a single `HEAD` request to S3 which can be
much faster than downloading all data with `get`.

Parameters
----------
keys : Iterable[str]
    Objects to query. Each key can be an S3 url or a path suffix.
return_missing : bool, default False
    If set to True, do not raise an exception for a missing key but
    return it as an `S3Object` with `.exists == False`.

Returns
-------
List[S3Object]
    A list of S3Objects corresponding to the paths requested. The
    objects will have `.downloaded == False`.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -666,7 +666,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -696,10 +696,10 @@ "id": "788746a9", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.716393Z", - "iopub.status.busy": "2024-07-25T06:16:55.716303Z", - "iopub.status.idle": "2024-07-25T06:16:55.724697Z", - "shell.execute_reply": "2024-07-25T06:16:55.724457Z" + "iopub.execute_input": "2025-08-30T21:15:33.293260Z", + "iopub.status.busy": "2025-08-30T21:15:33.293138Z", + "iopub.status.idle": "2025-08-30T21:15:33.301049Z", + "shell.execute_reply": "2025-08-30T21:15:33.300857Z" }, "scrolled": true }, @@ -708,9 +708,9 @@ "data": { "text/html": [ "\n", - "

class S3Object [source]

This object represents a path or an object in S3,
with an optional local copy.

`S3Object`s are not instantiated directly, but they are returned
by many methods of the `S3` client.

\n", + "

class S3Object [source]

This object represents a path or an object in S3,
with an optional local copy.

`S3Object`s are not instantiated directly, but they are returned
by many methods of the `S3` client.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -719,7 +719,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 15, @@ -737,10 +737,10 @@ "id": "d9e06053", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.726726Z", - "iopub.status.busy": "2024-07-25T06:16:55.726637Z", - "iopub.status.idle": "2024-07-25T06:16:55.728693Z", - "shell.execute_reply": "2024-07-25T06:16:55.728433Z" + "iopub.execute_input": "2025-08-30T21:15:33.303319Z", + "iopub.status.busy": "2025-08-30T21:15:33.303228Z", + "iopub.status.idle": "2025-08-30T21:15:33.305041Z", + "shell.execute_reply": "2025-08-30T21:15:33.304860Z" }, "scrolled": false }, @@ -760,7 +760,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -778,10 +778,10 @@ "id": "a6b91a6f", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.731022Z", - "iopub.status.busy": "2024-07-25T06:16:55.730936Z", - "iopub.status.idle": "2024-07-25T06:16:55.732901Z", - "shell.execute_reply": "2024-07-25T06:16:55.732647Z" + "iopub.execute_input": "2025-08-30T21:15:33.307057Z", + "iopub.status.busy": "2025-08-30T21:15:33.306985Z", + "iopub.status.idle": "2025-08-30T21:15:33.308743Z", + "shell.execute_reply": "2025-08-30T21:15:33.308555Z" }, "scrolled": false }, @@ -801,7 +801,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 17, @@ -819,10 +819,10 @@ "id": "7c4203ec", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.735121Z", - "iopub.status.busy": "2024-07-25T06:16:55.735033Z", - "iopub.status.idle": "2024-07-25T06:16:55.737100Z", - "shell.execute_reply": "2024-07-25T06:16:55.736876Z" + "iopub.execute_input": "2025-08-30T21:15:33.310666Z", + "iopub.status.busy": "2025-08-30T21:15:33.310591Z", + "iopub.status.idle": "2025-08-30T21:15:33.312322Z", + "shell.execute_reply": "2025-08-30T21:15:33.312137Z" }, "scrolled": false }, @@ -842,7 +842,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 18, @@ -860,10 +860,10 @@ "id": "e84a384d", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.739260Z", - "iopub.status.busy": "2024-07-25T06:16:55.739170Z", - "iopub.status.idle": "2024-07-25T06:16:55.741240Z", - "shell.execute_reply": "2024-07-25T06:16:55.740994Z" + "iopub.execute_input": "2025-08-30T21:15:33.314225Z", + "iopub.status.busy": "2025-08-30T21:15:33.314154Z", + "iopub.status.idle": "2025-08-30T21:15:33.315857Z", + "shell.execute_reply": "2025-08-30T21:15:33.315679Z" }, "scrolled": false }, @@ -883,7 +883,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 19, @@ -901,10 +901,10 @@ "id": "eeb28c6b", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.743302Z", - "iopub.status.busy": "2024-07-25T06:16:55.743199Z", - "iopub.status.idle": "2024-07-25T06:16:55.745316Z", - "shell.execute_reply": "2024-07-25T06:16:55.745046Z" + "iopub.execute_input": "2025-08-30T21:15:33.318038Z", + "iopub.status.busy": "2025-08-30T21:15:33.317966Z", + "iopub.status.idle": "2025-08-30T21:15:33.319678Z", + "shell.execute_reply": "2025-08-30T21:15:33.319520Z" }, "scrolled": false }, @@ -924,7 +924,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 20, @@ -942,10 +942,10 @@ "id": "71ae77e4", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.747389Z", - "iopub.status.busy": "2024-07-25T06:16:55.747309Z", - "iopub.status.idle": "2024-07-25T06:16:55.749317Z", - "shell.execute_reply": "2024-07-25T06:16:55.749047Z" + "iopub.execute_input": "2025-08-30T21:15:33.321765Z", + "iopub.status.busy": "2025-08-30T21:15:33.321689Z", + "iopub.status.idle": "2025-08-30T21:15:33.323405Z", + "shell.execute_reply": "2025-08-30T21:15:33.323223Z" }, "scrolled": true }, @@ -965,7 +965,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 21, @@ -983,10 +983,10 @@ "id": "2be25e64", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.751525Z", - "iopub.status.busy": "2024-07-25T06:16:55.751441Z", - "iopub.status.idle": "2024-07-25T06:16:55.753445Z", - "shell.execute_reply": "2024-07-25T06:16:55.753202Z" + "iopub.execute_input": "2025-08-30T21:15:33.325452Z", + "iopub.status.busy": "2025-08-30T21:15:33.325371Z", + "iopub.status.idle": "2025-08-30T21:15:33.327141Z", + "shell.execute_reply": "2025-08-30T21:15:33.326932Z" }, "scrolled": true }, @@ -1006,7 +1006,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 22, @@ -1024,10 +1024,10 @@ "id": "4f20cd6a", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.755533Z", - "iopub.status.busy": "2024-07-25T06:16:55.755449Z", - "iopub.status.idle": "2024-07-25T06:16:55.757428Z", - "shell.execute_reply": "2024-07-25T06:16:55.757176Z" + "iopub.execute_input": "2025-08-30T21:15:33.329132Z", + "iopub.status.busy": "2025-08-30T21:15:33.329061Z", + "iopub.status.idle": "2025-08-30T21:15:33.330763Z", + "shell.execute_reply": "2025-08-30T21:15:33.330578Z" }, "scrolled": false }, @@ -1047,7 +1047,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 23, @@ -1065,10 +1065,10 @@ "id": "86be736c", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.759514Z", - "iopub.status.busy": "2024-07-25T06:16:55.759426Z", - "iopub.status.idle": "2024-07-25T06:16:55.761395Z", - "shell.execute_reply": "2024-07-25T06:16:55.761162Z" + "iopub.execute_input": "2025-08-30T21:15:33.332654Z", + "iopub.status.busy": "2025-08-30T21:15:33.332586Z", + "iopub.status.idle": "2025-08-30T21:15:33.334208Z", + "shell.execute_reply": "2025-08-30T21:15:33.334030Z" }, "scrolled": true }, @@ -1088,7 +1088,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -1106,10 +1106,10 @@ "id": "ac57517e", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.763551Z", - "iopub.status.busy": "2024-07-25T06:16:55.763464Z", - "iopub.status.idle": "2024-07-25T06:16:55.765486Z", - "shell.execute_reply": "2024-07-25T06:16:55.765246Z" + "iopub.execute_input": "2025-08-30T21:15:33.336272Z", + "iopub.status.busy": "2025-08-30T21:15:33.336203Z", + "iopub.status.idle": "2025-08-30T21:15:33.337936Z", + "shell.execute_reply": "2025-08-30T21:15:33.337712Z" }, "scrolled": false }, @@ -1129,7 +1129,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 25, @@ -1147,10 +1147,10 @@ "id": "c73642bb", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.767601Z", - "iopub.status.busy": "2024-07-25T06:16:55.767518Z", - "iopub.status.idle": "2024-07-25T06:16:55.769503Z", - "shell.execute_reply": "2024-07-25T06:16:55.769254Z" + "iopub.execute_input": "2025-08-30T21:15:33.339900Z", + "iopub.status.busy": "2025-08-30T21:15:33.339829Z", + "iopub.status.idle": "2025-08-30T21:15:33.341734Z", + "shell.execute_reply": "2025-08-30T21:15:33.341539Z" }, "scrolled": true }, @@ -1170,7 +1170,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 26, @@ -1188,10 +1188,10 @@ "id": "82f36246", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.771721Z", - "iopub.status.busy": "2024-07-25T06:16:55.771626Z", - "iopub.status.idle": "2024-07-25T06:16:55.773673Z", - "shell.execute_reply": "2024-07-25T06:16:55.773403Z" + "iopub.execute_input": "2025-08-30T21:15:33.343793Z", + "iopub.status.busy": "2025-08-30T21:15:33.343719Z", + "iopub.status.idle": "2025-08-30T21:15:33.345451Z", + "shell.execute_reply": "2025-08-30T21:15:33.345267Z" }, "scrolled": true }, @@ -1211,7 +1211,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 27, @@ -1229,10 +1229,10 @@ "id": "1c06cf68", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.775747Z", - "iopub.status.busy": "2024-07-25T06:16:55.775653Z", - "iopub.status.idle": "2024-07-25T06:16:55.777621Z", - "shell.execute_reply": "2024-07-25T06:16:55.777370Z" + "iopub.execute_input": "2025-08-30T21:15:33.347585Z", + "iopub.status.busy": "2025-08-30T21:15:33.347504Z", + "iopub.status.idle": "2025-08-30T21:15:33.349294Z", + "shell.execute_reply": "2025-08-30T21:15:33.349118Z" }, "scrolled": false }, @@ -1249,7 +1249,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 28, @@ -1267,10 +1267,10 @@ "id": "22068e78", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.779811Z", - "iopub.status.busy": "2024-07-25T06:16:55.779711Z", - "iopub.status.idle": "2024-07-25T06:16:55.781811Z", - "shell.execute_reply": "2024-07-25T06:16:55.781562Z" + "iopub.execute_input": "2025-08-30T21:15:33.351318Z", + "iopub.status.busy": "2025-08-30T21:15:33.351248Z", + "iopub.status.idle": "2025-08-30T21:15:33.352937Z", + "shell.execute_reply": "2025-08-30T21:15:33.352761Z" }, "scrolled": true }, @@ -1290,7 +1290,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 29, @@ -1318,10 +1318,10 @@ "id": "92683b71", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.783914Z", - "iopub.status.busy": "2024-07-25T06:16:55.783825Z", - "iopub.status.idle": "2024-07-25T06:16:55.786436Z", - "shell.execute_reply": "2024-07-25T06:16:55.786196Z" + "iopub.execute_input": "2025-08-30T21:15:33.354982Z", + "iopub.status.busy": "2025-08-30T21:15:33.354911Z", + "iopub.status.idle": "2025-08-30T21:15:33.357068Z", + "shell.execute_reply": "2025-08-30T21:15:33.356890Z" } }, "outputs": [], @@ -1389,10 +1389,10 @@ "id": "6aaa4c89", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.788422Z", - "iopub.status.busy": "2024-07-25T06:16:55.788224Z", - "iopub.status.idle": "2024-07-25T06:16:55.790532Z", - "shell.execute_reply": "2024-07-25T06:16:55.790291Z" + "iopub.execute_input": "2025-08-30T21:15:33.358677Z", + "iopub.status.busy": "2025-08-30T21:15:33.358599Z", + "iopub.status.idle": "2025-08-30T21:15:33.360542Z", + "shell.execute_reply": "2025-08-30T21:15:33.360354Z" }, "scrolled": true }, @@ -1416,7 +1416,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 31, @@ -1434,10 +1434,10 @@ "id": "a0bbfe37", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.792669Z", - "iopub.status.busy": "2024-07-25T06:16:55.792581Z", - "iopub.status.idle": "2024-07-25T06:16:55.794839Z", - "shell.execute_reply": "2024-07-25T06:16:55.794610Z" + "iopub.execute_input": "2025-08-30T21:15:33.362577Z", + "iopub.status.busy": "2025-08-30T21:15:33.362502Z", + "iopub.status.idle": "2025-08-30T21:15:33.364441Z", + "shell.execute_reply": "2025-08-30T21:15:33.364246Z" }, "scrolled": false }, @@ -1463,7 +1463,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 32, diff --git a/docs/api/S3.md b/docs/api/S3.md index b8f5ab22..f6d74c33 100644 --- a/docs/api/S3.md +++ b/docs/api/S3.md @@ -15,7 +15,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d ## The `S3` client - + @@ -31,7 +31,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d - + @@ -43,7 +43,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d ## Downloading data - + @@ -60,7 +60,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d - + @@ -77,7 +77,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d - + @@ -93,7 +93,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d - + @@ -110,7 +110,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d ## Listing objects - + @@ -125,7 +125,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d - + @@ -142,7 +142,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d ## Uploading data - + @@ -161,7 +161,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d - + @@ -177,7 +177,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d - + @@ -195,7 +195,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d ## Querying metadata - + @@ -211,7 +211,7 @@ For instructions how to use the class, see [Loading and Storing Data](/scaling/d - + @@ -233,7 +233,7 @@ Most operations above return `S3Object`s that encapsulate information about S3 p Note that the data itself is not kept in these objects but it is stored in a temporary directory which is accessible through the properties of this object. - + diff --git a/docs/api/argoevent.ipynb b/docs/api/argoevent.ipynb index 7cbff70a..e71c50e8 100644 --- a/docs/api/argoevent.ipynb +++ b/docs/api/argoevent.ipynb @@ -21,10 +21,10 @@ "id": "623be2bc", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.861281Z", - "iopub.status.busy": "2024-07-25T06:16:57.861167Z", - "iopub.status.idle": "2024-07-25T06:16:58.142243Z", - "shell.execute_reply": "2024-07-25T06:16:58.141916Z" + "iopub.execute_input": "2025-08-30T21:15:35.980208Z", + "iopub.status.busy": "2025-08-30T21:15:35.980109Z", + "iopub.status.idle": "2025-08-30T21:15:36.215677Z", + "shell.execute_reply": "2025-08-30T21:15:36.215432Z" } }, "outputs": [], @@ -43,10 +43,10 @@ "id": "1bf3f08e", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:58.144720Z", - "iopub.status.busy": "2024-07-25T06:16:58.144574Z", - "iopub.status.idle": "2024-07-25T06:16:58.150537Z", - "shell.execute_reply": "2024-07-25T06:16:58.150220Z" + "iopub.execute_input": "2025-08-30T21:15:36.217828Z", + "iopub.status.busy": "2025-08-30T21:15:36.217681Z", + "iopub.status.idle": "2025-08-30T21:15:36.223338Z", + "shell.execute_reply": "2025-08-30T21:15:36.223136Z" } }, "outputs": [ @@ -69,7 +69,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -87,10 +87,10 @@ "id": "380eb9ac", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:58.152753Z", - "iopub.status.busy": "2024-07-25T06:16:58.152639Z", - "iopub.status.idle": "2024-07-25T06:16:58.155420Z", - "shell.execute_reply": "2024-07-25T06:16:58.155095Z" + "iopub.execute_input": "2025-08-30T21:15:36.225225Z", + "iopub.status.busy": "2025-08-30T21:15:36.225147Z", + "iopub.status.idle": "2025-08-30T21:15:36.227365Z", + "shell.execute_reply": "2025-08-30T21:15:36.227159Z" } }, "outputs": [ @@ -112,7 +112,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -130,10 +130,10 @@ "id": "31916bae", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:58.157788Z", - "iopub.status.busy": "2024-07-25T06:16:58.157687Z", - "iopub.status.idle": "2024-07-25T06:16:58.160981Z", - "shell.execute_reply": "2024-07-25T06:16:58.160604Z" + "iopub.execute_input": "2025-08-30T21:15:36.229396Z", + "iopub.status.busy": "2025-08-30T21:15:36.229326Z", + "iopub.status.idle": "2025-08-30T21:15:36.231974Z", + "shell.execute_reply": "2025-08-30T21:15:36.231765Z" } }, "outputs": [ @@ -155,7 +155,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -173,10 +173,10 @@ "id": "305678d7", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:58.163921Z", - "iopub.status.busy": "2024-07-25T06:16:58.163779Z", - "iopub.status.idle": "2024-07-25T06:16:58.166454Z", - "shell.execute_reply": "2024-07-25T06:16:58.166148Z" + "iopub.execute_input": "2025-08-30T21:15:36.234080Z", + "iopub.status.busy": "2025-08-30T21:15:36.233990Z", + "iopub.status.idle": "2025-08-30T21:15:36.236173Z", + "shell.execute_reply": "2025-08-30T21:15:36.235982Z" } }, "outputs": [ @@ -198,7 +198,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 5, diff --git a/docs/api/cards.ipynb b/docs/api/cards.ipynb index 7b032be9..7947dd07 100644 --- a/docs/api/cards.ipynb +++ b/docs/api/cards.ipynb @@ -28,10 +28,10 @@ "id": "a5ef9454", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.341488Z", - "iopub.status.busy": "2024-07-25T06:16:56.341371Z", - "iopub.status.idle": "2024-07-25T06:16:56.616466Z", - "shell.execute_reply": "2024-07-25T06:16:56.616152Z" + "iopub.execute_input": "2025-08-30T21:15:37.006885Z", + "iopub.status.busy": "2025-08-30T21:15:37.006809Z", + "iopub.status.idle": "2025-08-30T21:15:37.233431Z", + "shell.execute_reply": "2025-08-30T21:15:37.233162Z" } }, "outputs": [], @@ -63,10 +63,10 @@ "id": "09970e68", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.618794Z", - "iopub.status.busy": "2024-07-25T06:16:56.618638Z", - "iopub.status.idle": "2024-07-25T06:16:56.623639Z", - "shell.execute_reply": "2024-07-25T06:16:56.623386Z" + "iopub.execute_input": "2025-08-30T21:15:37.235529Z", + "iopub.status.busy": "2025-08-30T21:15:37.235392Z", + "iopub.status.idle": "2025-08-30T21:15:37.240298Z", + "shell.execute_reply": "2025-08-30T21:15:37.240077Z" } }, "outputs": [ @@ -93,7 +93,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -111,10 +111,10 @@ "id": "c65fa811", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.625620Z", - "iopub.status.busy": "2024-07-25T06:16:56.625534Z", - "iopub.status.idle": "2024-07-25T06:16:56.629835Z", - "shell.execute_reply": "2024-07-25T06:16:56.629594Z" + "iopub.execute_input": "2025-08-30T21:15:37.242304Z", + "iopub.status.busy": "2025-08-30T21:15:37.242214Z", + "iopub.status.idle": "2025-08-30T21:15:37.246532Z", + "shell.execute_reply": "2025-08-30T21:15:37.246324Z" } }, "outputs": [ @@ -133,7 +133,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -151,10 +151,10 @@ "id": "de91c8c9", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.631875Z", - "iopub.status.busy": "2024-07-25T06:16:56.631777Z", - "iopub.status.idle": "2024-07-25T06:16:56.635751Z", - "shell.execute_reply": "2024-07-25T06:16:56.635509Z" + "iopub.execute_input": "2025-08-30T21:15:37.248757Z", + "iopub.status.busy": "2025-08-30T21:15:37.248667Z", + "iopub.status.idle": "2025-08-30T21:15:37.252228Z", + "shell.execute_reply": "2025-08-30T21:15:37.252018Z" } }, "outputs": [ @@ -173,7 +173,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -191,10 +191,10 @@ "id": "6d76de09", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.637758Z", - "iopub.status.busy": "2024-07-25T06:16:56.637685Z", - "iopub.status.idle": "2024-07-25T06:16:56.640359Z", - "shell.execute_reply": "2024-07-25T06:16:56.640090Z" + "iopub.execute_input": "2025-08-30T21:15:37.254259Z", + "iopub.status.busy": "2025-08-30T21:15:37.254187Z", + "iopub.status.idle": "2025-08-30T21:15:37.256300Z", + "shell.execute_reply": "2025-08-30T21:15:37.256095Z" } }, "outputs": [ @@ -215,7 +215,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -233,10 +233,10 @@ "id": "69f97d00", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.642585Z", - "iopub.status.busy": "2024-07-25T06:16:56.642501Z", - "iopub.status.idle": "2024-07-25T06:16:56.644862Z", - "shell.execute_reply": "2024-07-25T06:16:56.644648Z" + "iopub.execute_input": "2025-08-30T21:15:37.258353Z", + "iopub.status.busy": "2025-08-30T21:15:37.258275Z", + "iopub.status.idle": "2025-08-30T21:15:37.260402Z", + "shell.execute_reply": "2025-08-30T21:15:37.260194Z" } }, "outputs": [ @@ -255,7 +255,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -285,10 +285,10 @@ "id": "53a776e9", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.647190Z", - "iopub.status.busy": "2024-07-25T06:16:56.647106Z", - "iopub.status.idle": "2024-07-25T06:16:56.648657Z", - "shell.execute_reply": "2024-07-25T06:16:56.648403Z" + "iopub.execute_input": "2025-08-30T21:15:37.262154Z", + "iopub.status.busy": "2025-08-30T21:15:37.262076Z", + "iopub.status.idle": "2025-08-30T21:15:37.263400Z", + "shell.execute_reply": "2025-08-30T21:15:37.263191Z" } }, "outputs": [], @@ -312,10 +312,10 @@ "id": "752c4a43", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.650644Z", - "iopub.status.busy": "2024-07-25T06:16:56.650537Z", - "iopub.status.idle": "2024-07-25T06:16:56.657385Z", - "shell.execute_reply": "2024-07-25T06:16:56.657142Z" + "iopub.execute_input": "2025-08-30T21:15:37.265195Z", + "iopub.status.busy": "2025-08-30T21:15:37.265122Z", + "iopub.status.idle": "2025-08-30T21:15:37.270700Z", + "shell.execute_reply": "2025-08-30T21:15:37.270518Z" }, "scrolled": true }, @@ -324,9 +324,9 @@ "data": { "text/html": [ "\n", - "

class Markdown (text=None)[source]

metaflow.cards

A block of text formatted in Markdown.

Example:
```
current.card.append(
    Markdown(\"# This is a header appended from `@step` code\")
)
```

Parameters
----------
text : str
    Text formatted in Markdown.

\n", + "

class Markdown (text=None)[source]

metaflow.cards

A block of text formatted in Markdown.

Example:
```
current.card.append(
    Markdown(\"# This is a header appended from `@step` code\")
)
```

Parameters
----------
text : str
    Text formatted in Markdown.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -337,7 +337,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -355,10 +355,10 @@ "id": "d9210681", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.659459Z", - "iopub.status.busy": "2024-07-25T06:16:56.659374Z", - "iopub.status.idle": "2024-07-25T06:16:56.661631Z", - "shell.execute_reply": "2024-07-25T06:16:56.661423Z" + "iopub.execute_input": "2025-08-30T21:15:37.272377Z", + "iopub.status.busy": "2025-08-30T21:15:37.272294Z", + "iopub.status.idle": "2025-08-30T21:15:37.274435Z", + "shell.execute_reply": "2025-08-30T21:15:37.274241Z" } }, "outputs": [ @@ -366,9 +366,9 @@ "data": { "text/html": [ "\n", - "

method Markdown.update (self, text=None)[source]

#FIXME document

\n", + "

method Markdown.update (self, text=None)[source]

#FIXME document

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -377,7 +377,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -403,10 +403,10 @@ "id": "9c198774", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.663827Z", - "iopub.status.busy": "2024-07-25T06:16:56.663744Z", - "iopub.status.idle": "2024-07-25T06:16:56.670992Z", - "shell.execute_reply": "2024-07-25T06:16:56.670722Z" + "iopub.execute_input": "2025-08-30T21:15:37.276486Z", + "iopub.status.busy": "2025-08-30T21:15:37.276404Z", + "iopub.status.idle": "2025-08-30T21:15:37.283350Z", + "shell.execute_reply": "2025-08-30T21:15:37.283126Z" } }, "outputs": [ @@ -414,9 +414,9 @@ "data": { "text/html": [ "\n", - "

class Image (src=None, label=None, disable_updates: bool = True)[source]

metaflow.cards

An image.

`Images can be created directly from PNG/JPG/GIF `bytes`, `PIL.Image`s,
or Matplotlib figures. Note that the image data is embedded in the card,
so no external files are required to show the image.

Example: Create an `Image` from bytes:
```
current.card.append(
    Image(
        requests.get(\"https://www.gif-vif.com/hacker-cat.gif\").content,
        \"Image From Bytes\"
    )
)
```

Example: Create an `Image` from a Matplotlib figure
```
import pandas as pd
import numpy as np
current.card.append(
    Image.from_matplotlib(
        pandas.DataFrame(
            np.random.randint(0, 100, size=(15, 4)),
            columns=list(\"ABCD\"),
        ).plot()
    )
)
```

Example: Create an `Image` from a [PIL](https://pillow.readthedocs.io/) Image
```
from PIL import Image as PILImage
current.card.append(
    Image.from_pil_image(
        PILImage.fromarray(np.random.randn(1024, 768), \"RGB\"),
        \"From PIL Image\"
    )
)
```

Parameters
----------
src : bytes
    The image data in `bytes`.
label : str
    Optional label for the image.

\n", + "

class Image (src=None, label=None, disable_updates: bool = True)[source]

metaflow.cards

An image.

`Images can be created directly from PNG/JPG/GIF `bytes`, `PIL.Image`s,
or Matplotlib figures. Note that the image data is embedded in the card,
so no external files are required to show the image.

Example: Create an `Image` from bytes:
```
current.card.append(
    Image(
        requests.get(\"https://www.gif-vif.com/hacker-cat.gif\").content,
        \"Image From Bytes\"
    )
)
```

Example: Create an `Image` from a Matplotlib figure
```
import pandas as pd
import numpy as np
current.card.append(
    Image.from_matplotlib(
        pandas.DataFrame(
            np.random.randint(0, 100, size=(15, 4)),
            columns=list(\"ABCD\"),
        ).plot()
    )
)
```

Example: Create an `Image` from a [PIL](https://pillow.readthedocs.io/) Image
```
from PIL import Image as PILImage
current.card.append(
    Image.from_pil_image(
        PILImage.fromarray(np.random.randn(1024, 768), \"RGB\"),
        \"From PIL Image\"
    )
)
```

Parameters
----------
src : bytes
    The image data in `bytes`.
label : str
    Optional label for the image.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -431,7 +431,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 10, @@ -449,10 +449,10 @@ "id": "da3999a9", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.672822Z", - "iopub.status.busy": "2024-07-25T06:16:56.672729Z", - "iopub.status.idle": "2024-07-25T06:16:56.675433Z", - "shell.execute_reply": "2024-07-25T06:16:56.675083Z" + "iopub.execute_input": "2025-08-30T21:15:37.285182Z", + "iopub.status.busy": "2025-08-30T21:15:37.285088Z", + "iopub.status.idle": "2025-08-30T21:15:37.287431Z", + "shell.execute_reply": "2025-08-30T21:15:37.287242Z" }, "scrolled": true }, @@ -461,9 +461,9 @@ "data": { "text/html": [ "\n", - "

method Image.from_matplotlib (plot, label: Optional[str] = None, disable_updates: bool = False)[source]

Create an `Image` from a Matplotlib plot.

Parameters
----------
plot :  matplotlib.figure.Figure or matplotlib.axes.Axes or matplotlib.axes._subplots.AxesSubplot
    a PIL axes (plot) object.
label : str, optional
    Optional label for the image.

\n", + "

method Image.from_matplotlib (plot, label: Optional[str] = None, disable_updates: bool = False)[source]

Create an `Image` from a Matplotlib plot.

Parameters
----------
plot :  matplotlib.figure.Figure or matplotlib.axes.Axes or matplotlib.axes._subplots.AxesSubplot
    a PIL axes (plot) object.
label : str, optional
    Optional label for the image.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -475,7 +475,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 11, @@ -493,10 +493,10 @@ "id": "432ec2c6", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.677654Z", - "iopub.status.busy": "2024-07-25T06:16:56.677554Z", - "iopub.status.idle": "2024-07-25T06:16:56.680038Z", - "shell.execute_reply": "2024-07-25T06:16:56.679807Z" + "iopub.execute_input": "2025-08-30T21:15:37.289165Z", + "iopub.status.busy": "2025-08-30T21:15:37.289080Z", + "iopub.status.idle": "2025-08-30T21:15:37.291349Z", + "shell.execute_reply": "2025-08-30T21:15:37.291165Z" }, "scrolled": true }, @@ -505,9 +505,9 @@ "data": { "text/html": [ "\n", - "

method Image.from_pil_image (pilimage, label: Optional[str] = None, disable_updates: bool = False)[source]

Create an `Image` from a PIL image.

Parameters
----------
pilimage : PIL.Image
    a PIL image object.
label : str, optional
    Optional label for the image.

\n", + "

method Image.from_pil_image (pilimage, label: Optional[str] = None, disable_updates: bool = False)[source]

Create an `Image` from a PIL image.

Parameters
----------
pilimage : PIL.Image
    a PIL image object.
label : str, optional
    Optional label for the image.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -519,7 +519,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -545,10 +545,10 @@ "id": "da4cf95b", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.682447Z", - "iopub.status.busy": "2024-07-25T06:16:56.682350Z", - "iopub.status.idle": "2024-07-25T06:16:56.687254Z", - "shell.execute_reply": "2024-07-25T06:16:56.687007Z" + "iopub.execute_input": "2025-08-30T21:15:37.293106Z", + "iopub.status.busy": "2025-08-30T21:15:37.293029Z", + "iopub.status.idle": "2025-08-30T21:15:37.297400Z", + "shell.execute_reply": "2025-08-30T21:15:37.297198Z" } }, "outputs": [ @@ -556,9 +556,9 @@ "data": { "text/html": [ "\n", - "

class Artifact (artifact: Any, name: Optional[str] = None, compressed: bool = True)[source]

metaflow.cards

A pretty-printed version of any Python object.

Large objects are truncated using Python's built-in [`reprlib`](https://docs.python.org/3/library/reprlib.html).

Example:
```
from datetime import datetime
current.card.append(Artifact({'now': datetime.utcnow()}))
```

Parameters
----------
artifact : object
    Any Python object.
name : str, optional
    Optional label for the object.
compressed : bool, default: True
    Use a truncated representation.

\n", + "

class Artifact (artifact: Any, name: Optional[str] = None, compressed: bool = True)[source]

metaflow.cards

A pretty-printed version of any Python object.

Large objects are truncated using Python's built-in [`reprlib`](https://docs.python.org/3/library/reprlib.html).

Example:
```
from datetime import datetime
current.card.append(Artifact({'now': datetime.utcnow()}))
```

Parameters
----------
artifact : object
    Any Python object.
name : str, optional
    Optional label for the object.
compressed : bool, default: True
    Use a truncated representation.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -571,7 +571,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 13, @@ -597,10 +597,10 @@ "id": "7d1a016c", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.689138Z", - "iopub.status.busy": "2024-07-25T06:16:56.689046Z", - "iopub.status.idle": "2024-07-25T06:16:56.694114Z", - "shell.execute_reply": "2024-07-25T06:16:56.693895Z" + "iopub.execute_input": "2025-08-30T21:15:37.299140Z", + "iopub.status.busy": "2025-08-30T21:15:37.299053Z", + "iopub.status.idle": "2025-08-30T21:15:37.304037Z", + "shell.execute_reply": "2025-08-30T21:15:37.303829Z" } }, "outputs": [ @@ -608,9 +608,9 @@ "data": { "text/html": [ "\n", - "

class Table (data: Optional[List[List[Union[str, metaflow.plugins.cards.card_modules.card.MetaflowCardComponent]]]] = None, headers: Optional[List[str]] = None, disable_updates: bool = False)[source]

metaflow.cards

A table.

The contents of the table can be text or numerical data, a Pandas dataframe,
or other card components: `Artifact`, `Image`, `Markdown` objects.

Example: Text and artifacts
```
from metaflow.cards import Table, Artifact
current.card.append(
    Table([
        ['first row', Artifact({'a': 2})],
        ['second row', Artifact(3)]
    ])
)
```

Example: Table from a Pandas dataframe
```
from metaflow.cards import Table
import pandas as pd
import numpy as np
current.card.append(
    Table.from_dataframe(
        pd.DataFrame(
            np.random.randint(0, 100, size=(15, 4)),
            columns=list(\"ABCD\")
        )
    )
)
```

Parameters
----------
data : List[List[str or MetaflowCardComponent]], optional
    List (rows) of lists (columns). Each item can be a string or a `MetaflowCardComponent`.
headers : List[str], optional
    Optional header row for the table.

\n", + "

class Table (data: Optional[List[List[Union[str, metaflow.plugins.cards.card_modules.card.MetaflowCardComponent]]]] = None, headers: Optional[List[str]] = None, disable_updates: bool = False)[source]

metaflow.cards

A table.

The contents of the table can be text or numerical data, a Pandas dataframe,
or other card components: `Artifact`, `Image`, `Markdown` objects.

Example: Text and artifacts
```
from metaflow.cards import Table, Artifact
current.card.append(
    Table([
        ['first row', Artifact({'a': 2})],
        ['second row', Artifact(3)]
    ])
)
```

Example: Table from a Pandas dataframe
```
from metaflow.cards import Table
import pandas as pd
import numpy as np
current.card.append(
    Table.from_dataframe(
        pd.DataFrame(
            np.random.randint(0, 100, size=(15, 4)),
            columns=list(\"ABCD\")
        )
    )
)
```

Parameters
----------
data : List[List[str or MetaflowCardComponent]], optional
    List (rows) of lists (columns). Each item can be a string or a `MetaflowCardComponent`.
headers : List[str], optional
    Optional header row for the table.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -625,7 +625,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -643,10 +643,10 @@ "id": "1e65fe26", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.695893Z", - "iopub.status.busy": "2024-07-25T06:16:56.695810Z", - "iopub.status.idle": "2024-07-25T06:16:56.698120Z", - "shell.execute_reply": "2024-07-25T06:16:56.697905Z" + "iopub.execute_input": "2025-08-30T21:15:37.306739Z", + "iopub.status.busy": "2025-08-30T21:15:37.306650Z", + "iopub.status.idle": "2025-08-30T21:15:37.309033Z", + "shell.execute_reply": "2025-08-30T21:15:37.308791Z" } }, "outputs": [ @@ -654,9 +654,9 @@ "data": { "text/html": [ "\n", - "

method Table.from_dataframe (dataframe=None, truncate: bool = True)[source]

Create a `Table` based on a Pandas dataframe.

Parameters
----------
dataframe : Optional[pandas.DataFrame]
    Pandas dataframe.
truncate : bool, default: True
    Truncate large dataframe instead of showing all rows (default: True).

\n", + "

method Table.from_dataframe (dataframe=None, truncate: bool = True)[source]

Create a `Table` based on a Pandas dataframe.

Parameters
----------
dataframe : Optional[pandas.DataFrame]
    Pandas dataframe.
truncate : bool, default: True
    Truncate large dataframe instead of showing all rows (default: True).

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -668,7 +668,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 15, @@ -694,10 +694,10 @@ "id": "95806342", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.699962Z", - "iopub.status.busy": "2024-07-25T06:16:56.699869Z", - "iopub.status.idle": "2024-07-25T06:16:56.709072Z", - "shell.execute_reply": "2024-07-25T06:16:56.708826Z" + "iopub.execute_input": "2025-08-30T21:15:37.313224Z", + "iopub.status.busy": "2025-08-30T21:15:37.313140Z", + "iopub.status.idle": "2025-08-30T21:15:37.322335Z", + "shell.execute_reply": "2025-08-30T21:15:37.322108Z" } }, "outputs": [ @@ -705,9 +705,9 @@ "data": { "text/html": [ "\n", - "

class VegaChart (spec: dict, show_controls: bool = False)[source]

metaflow.cards\n", + "

class VegaChart (spec: dict, show_controls: bool = False)[source]

metaflow.cards\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -716,7 +716,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -734,10 +734,10 @@ "id": "b852d84f", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.710961Z", - "iopub.status.busy": "2024-07-25T06:16:56.710867Z", - "iopub.status.idle": "2024-07-25T06:16:56.713072Z", - "shell.execute_reply": "2024-07-25T06:16:56.712826Z" + "iopub.execute_input": "2025-08-30T21:15:37.324387Z", + "iopub.status.busy": "2025-08-30T21:15:37.324294Z", + "iopub.status.idle": "2025-08-30T21:15:37.326501Z", + "shell.execute_reply": "2025-08-30T21:15:37.326268Z" } }, "outputs": [ @@ -745,9 +745,9 @@ "data": { "text/html": [ "\n", - "

method VegaChart.from_altair_chart (altair_chart)[source]

\n", + "

method VegaChart.from_altair_chart (altair_chart)[source]

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -756,7 +756,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 17, @@ -774,10 +774,10 @@ "id": "1636aa90", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.715186Z", - "iopub.status.busy": "2024-07-25T06:16:56.715097Z", - "iopub.status.idle": "2024-07-25T06:16:56.717335Z", - "shell.execute_reply": "2024-07-25T06:16:56.717085Z" + "iopub.execute_input": "2025-08-30T21:15:37.329142Z", + "iopub.status.busy": "2025-08-30T21:15:37.329058Z", + "iopub.status.idle": "2025-08-30T21:15:37.331154Z", + "shell.execute_reply": "2025-08-30T21:15:37.330962Z" } }, "outputs": [ @@ -785,9 +785,9 @@ "data": { "text/html": [ "\n", - "

method VegaChart.update (self, spec=None)[source]

Update the chart.

Parameters
----------
spec : dict or altair.Chart
    The updated chart spec or an altair Chart Object.

\n", + "

method VegaChart.update (self, spec=None)[source]

Update the chart.

Parameters
----------
spec : dict or altair.Chart
    The updated chart spec or an altair Chart Object.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -798,7 +798,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 18, @@ -824,10 +824,10 @@ "id": "5484e8cc", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.719348Z", - "iopub.status.busy": "2024-07-25T06:16:56.719253Z", - "iopub.status.idle": "2024-07-25T06:16:56.725197Z", - "shell.execute_reply": "2024-07-25T06:16:56.724929Z" + "iopub.execute_input": "2025-08-30T21:15:37.333312Z", + "iopub.status.busy": "2025-08-30T21:15:37.333231Z", + "iopub.status.idle": "2025-08-30T21:15:37.338959Z", + "shell.execute_reply": "2025-08-30T21:15:37.338760Z" } }, "outputs": [ @@ -835,19 +835,19 @@ "data": { "text/html": [ "\n", - "

class ProgressBar (max: int = 100, label: str = None, value: int = 0, unit: str = None, metadata: str = None)[source]

metaflow.cards

A Progress bar for tracking progress of any task.

Example:
```
progress_bar = ProgressBar(
    max=100,
    label=\"Progress Bar\",
    value=0,
    unit=\"%\",
    metadata=\"0.1 items/s\"
)
current.card.append(
    progress_bar
)
for i in range(100):
    progress_bar.update(i, metadata=\"%s items/s\" % i)

```

Parameters
----------
max : int
    The maximum value of the progress bar.
label : str, optional
    Optional label for the progress bar.
value : int, optional
    Optional initial value of the progress bar.
unit : str, optional
    Optional unit for the progress bar.
metadata : str, optional
    Optional additional information to show on the progress bar.

\n", + "

class ProgressBar (max: int = 100, label: Optional[str] = None, value: int = 0, unit: Optional[str] = None, metadata: Optional[str] = None)[source]

metaflow.cards

A Progress bar for tracking progress of any task.

Example:
```
progress_bar = ProgressBar(
    max=100,
    label=\"Progress Bar\",
    value=0,
    unit=\"%\",
    metadata=\"0.1 items/s\"
)
current.card.append(
    progress_bar
)
for i in range(100):
    progress_bar.update(i, metadata=\"%s items/s\" % i)

```

Parameters
----------
max : int, default 100
    The maximum value of the progress bar.
label : str, optional, default None
    Optional label for the progress bar.
value : int, default 0
    Optional initial value of the progress bar.
unit : str, optional, default None
    Optional unit for the progress bar.
metadata : str, optional, default None
    Optional additional information to show on the progress bar.

\n", "
\n", - "\n", + "\n", "\n", - "\n", + "\n", "\n", "\n", "\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "\n", "\n", "\t\n", @@ -855,7 +855,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 19, @@ -873,10 +873,10 @@ "id": "7d6e7dab", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.727258Z", - "iopub.status.busy": "2024-07-25T06:16:56.727172Z", - "iopub.status.idle": "2024-07-25T06:16:56.729479Z", - "shell.execute_reply": "2024-07-25T06:16:56.729197Z" + "iopub.execute_input": "2025-08-30T21:15:37.341085Z", + "iopub.status.busy": "2025-08-30T21:15:37.340996Z", + "iopub.status.idle": "2025-08-30T21:15:37.342991Z", + "shell.execute_reply": "2025-08-30T21:15:37.342816Z" } }, "outputs": [ @@ -884,18 +884,18 @@ "data": { "text/html": [ "\n", - "

method ProgressBar.update (self, new_value: int, metadata: str = None)[source]

#FIXME document

\n", + "

method ProgressBar.update (self, new_value: int, metadata: Optional[str] = None)[source]

#FIXME document

\n", "
\n", - "\n", + "\n", "\n", - "\n", + "\n", "\n", "\n", "\n", "" ], "text/plain": [ - "" + "" ] }, "execution_count": 20, @@ -925,10 +925,10 @@ "id": "3dc4881f", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.731605Z", - "iopub.status.busy": "2024-07-25T06:16:56.731524Z", - "iopub.status.idle": "2024-07-25T06:16:56.732959Z", - "shell.execute_reply": "2024-07-25T06:16:56.732740Z" + "iopub.execute_input": "2025-08-30T21:15:37.344931Z", + "iopub.status.busy": "2025-08-30T21:15:37.344855Z", + "iopub.status.idle": "2025-08-30T21:15:37.346194Z", + "shell.execute_reply": "2025-08-30T21:15:37.346015Z" } }, "outputs": [], @@ -943,10 +943,10 @@ "id": "6210f683", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.734788Z", - "iopub.status.busy": "2024-07-25T06:16:56.734707Z", - "iopub.status.idle": "2024-07-25T06:16:56.737988Z", - "shell.execute_reply": "2024-07-25T06:16:56.737749Z" + "iopub.execute_input": "2025-08-30T21:15:37.347735Z", + "iopub.status.busy": "2025-08-30T21:15:37.347675Z", + "iopub.status.idle": "2025-08-30T21:15:37.350321Z", + "shell.execute_reply": "2025-08-30T21:15:37.350136Z" } }, "outputs": [ @@ -954,9 +954,9 @@ "data": { "text/html": [ "\n", - "

class MetaflowCard options[source]

metaflow.cards

Metaflow cards derive from this base class.

Subclasses of this class are called *card types*. The desired card
type `T` is defined in the `@card` decorator as `@card(type=T)`.

After a task with `@card(type=T, options=S)` finishes executing, Metaflow instantiates
a subclass `C` of `MetaflowCard` that has its `type` attribute set to `T`, i.e. `C.type=T`.
The constructor is given the options dictionary `S` that contains arbitrary
JSON-encodable data that is passed to the instance, parametrizing the card. The subclass
may override the constructor to capture and process the options.

The subclass needs to implement a `render(task)` method that produces the card
contents in HTML, given the finished task that is represented by a `Task` object.

Attributes
----------
type : str
    Card type string. Note that this should be a globally unique name, similar to a
    Python package name, to avoid name clashes between different custom cards.

Parameters
----------
options : Dict
    JSON-encodable dictionary containing user-definable options for the class.

\n", + "

class MetaflowCard options[source]

metaflow.cards

Metaflow cards derive from this base class.

Subclasses of this class are called *card types*. The desired card
type `T` is defined in the `@card` decorator as `@card(type=T)`.

After a task with `@card(type=T, options=S)` finishes executing, Metaflow instantiates
a subclass `C` of `MetaflowCard` that has its `type` attribute set to `T`, i.e. `C.type=T`.
The constructor is given the options dictionary `S` that contains arbitrary
JSON-encodable data that is passed to the instance, parametrizing the card. The subclass
may override the constructor to capture and process the options.

The subclass needs to implement a `render(task)` method that produces the card
contents in HTML, given the finished task that is represented by a `Task` object.

Attributes
----------
type : str
    Card type string. Note that this should be a globally unique name, similar to a
    Python package name, to avoid name clashes between different custom cards.

Parameters
----------
options : Dict
    JSON-encodable dictionary containing user-definable options for the class.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -970,7 +970,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 22, @@ -988,10 +988,10 @@ "id": "c71b83c5", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.739690Z", - "iopub.status.busy": "2024-07-25T06:16:56.739624Z", - "iopub.status.idle": "2024-07-25T06:16:56.818932Z", - "shell.execute_reply": "2024-07-25T06:16:56.818574Z" + "iopub.execute_input": "2025-08-30T21:15:37.352402Z", + "iopub.status.busy": "2025-08-30T21:15:37.352327Z", + "iopub.status.idle": "2025-08-30T21:15:37.417799Z", + "shell.execute_reply": "2025-08-30T21:15:37.417558Z" } }, "outputs": [ @@ -1014,7 +1014,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 23, @@ -1032,10 +1032,10 @@ "id": "e2c444ee", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.821647Z", - "iopub.status.busy": "2024-07-25T06:16:56.821534Z", - "iopub.status.idle": "2024-07-25T06:16:56.824138Z", - "shell.execute_reply": "2024-07-25T06:16:56.823867Z" + "iopub.execute_input": "2025-08-30T21:15:37.419604Z", + "iopub.status.busy": "2025-08-30T21:15:37.419528Z", + "iopub.status.idle": "2025-08-30T21:15:37.421520Z", + "shell.execute_reply": "2025-08-30T21:15:37.421335Z" } }, "outputs": [ @@ -1043,9 +1043,9 @@ "data": { "text/html": [ "\n", - "

method MetaflowCard.render_runtime (self, task, data)[source]

\n", + "

method MetaflowCard.render_runtime (self, task, data)[source]

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -1054,7 +1054,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -1072,10 +1072,10 @@ "id": "e360ce50", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.826778Z", - "iopub.status.busy": "2024-07-25T06:16:56.826668Z", - "iopub.status.idle": "2024-07-25T06:16:56.829343Z", - "shell.execute_reply": "2024-07-25T06:16:56.829068Z" + "iopub.execute_input": "2025-08-30T21:15:37.423756Z", + "iopub.status.busy": "2025-08-30T21:15:37.423671Z", + "iopub.status.idle": "2025-08-30T21:15:37.425660Z", + "shell.execute_reply": "2025-08-30T21:15:37.425474Z" } }, "outputs": [ @@ -1083,9 +1083,9 @@ "data": { "text/html": [ "\n", - "

method MetaflowCard.refresh (self, task, data)[source]

\n", + "

method MetaflowCard.refresh (self, task, data)[source]

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -1094,7 +1094,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 25, diff --git a/docs/api/cards.md b/docs/api/cards.md index ca60828e..75d1a2a0 100644 --- a/docs/api/cards.md +++ b/docs/api/cards.md @@ -85,7 +85,7 @@ The components are added to cards in `@step` methods (or functions called from s ### Markdown - + @@ -97,7 +97,7 @@ The components are added to cards in `@step` methods (or functions called from s - + @@ -109,7 +109,7 @@ The components are added to cards in `@step` methods (or functions called from s ### Image - + @@ -125,7 +125,7 @@ The components are added to cards in `@step` methods (or functions called from s - + @@ -138,7 +138,7 @@ The components are added to cards in `@step` methods (or functions called from s - + @@ -153,7 +153,7 @@ The components are added to cards in `@step` methods (or functions called from s ### Artifact - + @@ -169,7 +169,7 @@ The components are added to cards in `@step` methods (or functions called from s ### Table - + @@ -185,7 +185,7 @@ The components are added to cards in `@step` methods (or functions called from s - + @@ -200,7 +200,7 @@ The components are added to cards in `@step` methods (or functions called from s ### VegaChart - + @@ -210,7 +210,7 @@ The components are added to cards in `@step` methods (or functions called from s - + @@ -220,7 +220,7 @@ The components are added to cards in `@step` methods (or functions called from s - + @@ -234,17 +234,17 @@ The components are added to cards in `@step` methods (or functions called from s ### ProgressBar - + - + - - - - - + + + + + @@ -253,9 +253,9 @@ The components are added to cards in `@step` methods (or functions called from s - + - + @@ -269,7 +269,7 @@ You can define custom cards types (`T` in `@card(type=T)`) by creating a Python Find detailed instructions, a starter template, and an example of a [simple static custom card](https://github.com/outerbounds/metaflow-card-html) and [an example of a dynamic card]( https://github.com/outerbounds/metaflow-card-scatter3d). - + @@ -346,13 +346,13 @@ ShowDoc(MetaflowCard.render) - + ``` - + @@ -362,7 +362,7 @@ ShowDoc(MetaflowCard.render) - + diff --git a/docs/api/client.ipynb b/docs/api/client.ipynb index c0029283..dae062b1 100644 --- a/docs/api/client.ipynb +++ b/docs/api/client.ipynb @@ -70,10 +70,10 @@ "id": "d1e0717d-dcdd-43f8-9116-1fbe15200503", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.350381Z", - "iopub.status.busy": "2024-07-25T06:16:57.350292Z", - "iopub.status.idle": "2024-07-25T06:16:57.577789Z", - "shell.execute_reply": "2024-07-25T06:16:57.577486Z" + "iopub.execute_input": "2025-08-30T21:15:33.967369Z", + "iopub.status.busy": "2025-08-30T21:15:33.967284Z", + "iopub.status.idle": "2025-08-30T21:15:34.145357Z", + "shell.execute_reply": "2025-08-30T21:15:34.145075Z" } }, "outputs": [], @@ -108,10 +108,10 @@ "id": "be46136f-68d0-4b73-b53c-a6da21023ea7", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.580144Z", - "iopub.status.busy": "2024-07-25T06:16:57.580007Z", - "iopub.status.idle": "2024-07-25T06:16:57.635667Z", - "shell.execute_reply": "2024-07-25T06:16:57.635201Z" + "iopub.execute_input": "2025-08-30T21:15:34.147424Z", + "iopub.status.busy": "2025-08-30T21:15:34.147299Z", + "iopub.status.idle": "2025-08-30T21:15:34.208485Z", + "shell.execute_reply": "2025-08-30T21:15:34.208247Z" } }, "outputs": [ @@ -119,11 +119,11 @@ "data": { "text/html": [ "\n", - "

class Metaflow ()[source]

Entry point to all objects in the Metaflow universe.

This object can be used to list all the flows present either through the explicit property
or by iterating over this object.

Attributes
----------
flows : List[Flow]
    Returns the list of all `Flow` objects known to this metadata provider. Note that only
    flows present in the current namespace will be returned. A `Flow` is present in a namespace
    if it has at least one run in the namespace.

\n", + "

class Metaflow (_current_metadata: Optional[str] = None)[source]

Entry point to all objects in the Metaflow universe.

This object can be used to list all the flows present either through the explicit property
or by iterating over this object.

Attributes
----------
flows : List[Flow]
    Returns the list of all `Flow` objects known to this metadata provider. Note that only
    flows present in the current namespace will be returned. A `Flow` is present in a namespace
    if it has at least one run in the namespace.

\n", "
\n", - "\n", + "\n", "\n", - "\n", + "\n", "\n", "\n", "\n", @@ -132,7 +132,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -160,10 +160,10 @@ "id": "aa03d75d-c0cc-4d5b-a65a-bab43e5061fe", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.639238Z", - "iopub.status.busy": "2024-07-25T06:16:57.639123Z", - "iopub.status.idle": "2024-07-25T06:16:57.649624Z", - "shell.execute_reply": "2024-07-25T06:16:57.649377Z" + "iopub.execute_input": "2025-08-30T21:15:34.210366Z", + "iopub.status.busy": "2025-08-30T21:15:34.210272Z", + "iopub.status.idle": "2025-08-30T21:15:34.220254Z", + "shell.execute_reply": "2025-08-30T21:15:34.220048Z" } }, "outputs": [ @@ -171,9 +171,9 @@ "data": { "text/html": [ "\n", - "

class Flow pathspec[source]

A Flow represents all existing flows with a certain name, in other words,
classes derived from `FlowSpec`. A container of `Run` objects.

Attributes
----------
latest_run : Run
    Latest `Run` (in progress or completed, successfully or not) of this flow.
latest_successful_run : Run
    Latest successfully completed `Run` of this flow.

\n", + "

class Flow pathspec[source]

A Flow represents all existing flows with a certain name, in other words,
classes derived from `FlowSpec`. A container of `Run` objects.

Attributes
----------
latest_run : Run
    Latest `Run` (in progress or completed, successfully or not) of this flow.
latest_successful_run : Run
    Latest successfully completed `Run` of this flow.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -185,7 +185,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -203,10 +203,10 @@ "id": "e0da0de1", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.651561Z", - "iopub.status.busy": "2024-07-25T06:16:57.651461Z", - "iopub.status.idle": "2024-07-25T06:16:57.654260Z", - "shell.execute_reply": "2024-07-25T06:16:57.653992Z" + "iopub.execute_input": "2025-08-30T21:15:34.222338Z", + "iopub.status.busy": "2025-08-30T21:15:34.222263Z", + "iopub.status.idle": "2025-08-30T21:15:34.224519Z", + "shell.execute_reply": "2025-08-30T21:15:34.224297Z" } }, "outputs": [ @@ -214,9 +214,9 @@ "data": { "text/html": [ "\n", - "

method Flow.runs (self, *tags: str) -> Iterator[metaflow.client.core.Run][source]

Returns an iterator over all `Run`s of this flow.

An optional filter is available that allows you to filter on tags.
If multiple tags are specified, only runs that have all the
specified tags are returned.

Parameters
----------
tags : str
    Tags to match.

Yields
------
Run
    `Run` objects in this flow.

\n", + "

method Flow.runs (self, *tags: str) -> Iterator[metaflow.client.core.Run][source]

Returns an iterator over all `Run`s of this flow.

An optional filter is available that allows you to filter on tags.
If multiple tags are specified, only runs that have all the
specified tags are returned.

Parameters
----------
tags : str
    Tags to match.

Yields
------
Run
    `Run` objects in this flow.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -230,7 +230,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -256,10 +256,10 @@ "id": "4302ed53", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.656361Z", - "iopub.status.busy": "2024-07-25T06:16:57.656263Z", - "iopub.status.idle": "2024-07-25T06:16:57.667437Z", - "shell.execute_reply": "2024-07-25T06:16:57.667078Z" + "iopub.execute_input": "2025-08-30T21:15:34.226615Z", + "iopub.status.busy": "2025-08-30T21:15:34.226535Z", + "iopub.status.idle": "2025-08-30T21:15:34.237013Z", + "shell.execute_reply": "2025-08-30T21:15:34.236784Z" } }, "outputs": [ @@ -267,9 +267,9 @@ "data": { "text/html": [ "\n", - "

class Run pathspec[source]

A `Run` represents an execution of a `Flow`. It is a container of `Step`s.

Attributes
----------
data : MetaflowData
    a shortcut to run['end'].task.data, i.e. data produced by this run.
successful : bool
    True if the run completed successfully.
finished : bool
    True if the run completed.
finished_at : datetime
    Time this run finished.
code : MetaflowCode
    Code package for this run (if present). See `MetaflowCode`.
trigger : MetaflowTrigger
    Information about event(s) that triggered this run (if present). See `MetaflowTrigger`.
end_task : Task
    `Task` for the end step (if it is present already).

\n", + "

class Run pathspec[source]

A `Run` represents an execution of a `Flow`. It is a container of `Step`s.

Attributes
----------
data : MetaflowData
    a shortcut to run['end'].task.data, i.e. data produced by this run.
successful : bool
    True if the run completed successfully.
finished : bool
    True if the run completed.
finished_at : datetime
    Time this run finished.
code : MetaflowCode
    Code package for this run (if present). See `MetaflowCode`.
trigger : MetaflowTrigger
    Information about event(s) that triggered this run (if present). See `MetaflowTrigger`.
end_task : Task
    `Task` for the end step (if it is present already).

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -286,7 +286,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -304,10 +304,10 @@ "id": "5d0ad8c7", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.670190Z", - "iopub.status.busy": "2024-07-25T06:16:57.670055Z", - "iopub.status.idle": "2024-07-25T06:16:57.672698Z", - "shell.execute_reply": "2024-07-25T06:16:57.672414Z" + "iopub.execute_input": "2025-08-30T21:15:34.238902Z", + "iopub.status.busy": "2025-08-30T21:15:34.238813Z", + "iopub.status.idle": "2025-08-30T21:15:34.241179Z", + "shell.execute_reply": "2025-08-30T21:15:34.240959Z" } }, "outputs": [ @@ -315,9 +315,9 @@ "data": { "text/html": [ "\n", - "

method Run.add_tag (self, tag: str)[source]

Add a tag to this `Run`.

Note that if the tag is already a system tag, it is not added as a user tag,
and no error is thrown.

Parameters
----------
tag : str
    Tag to add.

\n", + "

method Run.add_tag (self, tag: str)[source]

Add a tag to this `Run`.

Note that if the tag is already a system tag, it is not added as a user tag,
and no error is thrown.

Parameters
----------
tag : str
    Tag to add.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -328,7 +328,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -346,10 +346,10 @@ "id": "037da6e3", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.675043Z", - "iopub.status.busy": "2024-07-25T06:16:57.674938Z", - "iopub.status.idle": "2024-07-25T06:16:57.677501Z", - "shell.execute_reply": "2024-07-25T06:16:57.677260Z" + "iopub.execute_input": "2025-08-30T21:15:34.242875Z", + "iopub.status.busy": "2025-08-30T21:15:34.242797Z", + "iopub.status.idle": "2025-08-30T21:15:34.244842Z", + "shell.execute_reply": "2025-08-30T21:15:34.244649Z" } }, "outputs": [ @@ -357,9 +357,9 @@ "data": { "text/html": [ "\n", - "

method Run.add_tags (self, tags: Iterable[str])[source]

Add one or more tags to this `Run`.

Note that if any tag is already a system tag, it is not added as a user tag
and no error is thrown.

Parameters
----------
tags : Iterable[str]
    Tags to add.

\n", + "

method Run.add_tags (self, tags: Iterable[str])[source]

Add one or more tags to this `Run`.

Note that if any tag is already a system tag, it is not added as a user tag
and no error is thrown.

Parameters
----------
tags : Iterable[str]
    Tags to add.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -370,7 +370,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -388,10 +388,10 @@ "id": "0ebd8693", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.679621Z", - "iopub.status.busy": "2024-07-25T06:16:57.679535Z", - "iopub.status.idle": "2024-07-25T06:16:57.682013Z", - "shell.execute_reply": "2024-07-25T06:16:57.681753Z" + "iopub.execute_input": "2025-08-30T21:15:34.246887Z", + "iopub.status.busy": "2025-08-30T21:15:34.246804Z", + "iopub.status.idle": "2025-08-30T21:15:34.248806Z", + "shell.execute_reply": "2025-08-30T21:15:34.248624Z" } }, "outputs": [ @@ -399,9 +399,9 @@ "data": { "text/html": [ "\n", - "

method Run.remove_tag (self, tag: str)[source]

Remove one tag from this `Run`.

Removing a system tag is an error. Removing a non-existent
user tag is a no-op.

Parameters
----------
tag : str
    Tag to remove.

\n", + "

method Run.remove_tag (self, tag: str)[source]

Remove one tag from this `Run`.

Removing a system tag is an error. Removing a non-existent
user tag is a no-op.

Parameters
----------
tag : str
    Tag to remove.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -412,7 +412,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -430,10 +430,10 @@ "id": "0dd3c17a", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.683864Z", - "iopub.status.busy": "2024-07-25T06:16:57.683778Z", - "iopub.status.idle": "2024-07-25T06:16:57.686125Z", - "shell.execute_reply": "2024-07-25T06:16:57.685886Z" + "iopub.execute_input": "2025-08-30T21:15:34.250993Z", + "iopub.status.busy": "2025-08-30T21:15:34.250920Z", + "iopub.status.idle": "2025-08-30T21:15:34.252901Z", + "shell.execute_reply": "2025-08-30T21:15:34.252691Z" } }, "outputs": [ @@ -441,9 +441,9 @@ "data": { "text/html": [ "\n", - "

method Run.remove_tags (self, tags: Iterable[str])[source]

Remove one or more tags to this `Run`.

Removing a system tag will result in an error. Removing a non-existent
user tag is a no-op.

Parameters
----------
tags : Iterable[str]
    Tags to remove.

\n", + "

method Run.remove_tags (self, tags: Iterable[str])[source]

Remove one or more tags to this `Run`.

Removing a system tag will result in an error. Removing a non-existent
user tag is a no-op.

Parameters
----------
tags : Iterable[str]
    Tags to remove.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -454,7 +454,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -472,10 +472,10 @@ "id": "2e97ed7e", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.688756Z", - "iopub.status.busy": "2024-07-25T06:16:57.688669Z", - "iopub.status.idle": "2024-07-25T06:16:57.691195Z", - "shell.execute_reply": "2024-07-25T06:16:57.690885Z" + "iopub.execute_input": "2025-08-30T21:15:34.255209Z", + "iopub.status.busy": "2025-08-30T21:15:34.255117Z", + "iopub.status.idle": "2025-08-30T21:15:34.257286Z", + "shell.execute_reply": "2025-08-30T21:15:34.257079Z" } }, "outputs": [ @@ -483,9 +483,9 @@ "data": { "text/html": [ "\n", - "

method Run.replace_tag (self, tag_to_remove: str, tag_to_add: str)[source]

Remove a tag and add a tag atomically. Removal is done first.
The rules for `Run.add_tag` and `Run.remove_tag` also apply here.

Parameters
----------
tag_to_remove : str
    Tag to remove.
tag_to_add : str
    Tag to add.

\n", + "

method Run.replace_tag (self, tag_to_remove: str, tag_to_add: str)[source]

Remove a tag and add a tag atomically. Removal is done first.
The rules for `Run.add_tag` and `Run.remove_tag` also apply here.

Parameters
----------
tag_to_remove : str
    Tag to remove.
tag_to_add : str
    Tag to add.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -497,7 +497,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 10, @@ -515,10 +515,10 @@ "id": "782ee581", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.693713Z", - "iopub.status.busy": "2024-07-25T06:16:57.693614Z", - "iopub.status.idle": "2024-07-25T06:16:57.696060Z", - "shell.execute_reply": "2024-07-25T06:16:57.695825Z" + "iopub.execute_input": "2025-08-30T21:15:34.259876Z", + "iopub.status.busy": "2025-08-30T21:15:34.259753Z", + "iopub.status.idle": "2025-08-30T21:15:34.262200Z", + "shell.execute_reply": "2025-08-30T21:15:34.261987Z" } }, "outputs": [ @@ -526,9 +526,9 @@ "data": { "text/html": [ "\n", - "

method Run.replace_tags (self, tags_to_remove: Iterable[str], tags_to_add: Iterable[str])[source]

Remove and add tags atomically; the removal is done first.
The rules for `Run.add_tag` and `Run.remove_tag` also apply here.

Parameters
----------
tags_to_remove : Iterable[str]
    Tags to remove.
tags_to_add : Iterable[str]
    Tags to add.

\n", + "

method Run.replace_tags (self, tags_to_remove: Iterable[str], tags_to_add: Iterable[str])[source]

Remove and add tags atomically; the removal is done first.
The rules for `Run.add_tag` and `Run.remove_tag` also apply here.

Parameters
----------
tags_to_remove : Iterable[str]
    Tags to remove.
tags_to_add : Iterable[str]
    Tags to add.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -540,7 +540,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 11, @@ -566,10 +566,10 @@ "id": "e56c7d2d", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.698624Z", - "iopub.status.busy": "2024-07-25T06:16:57.698526Z", - "iopub.status.idle": "2024-07-25T06:16:57.708117Z", - "shell.execute_reply": "2024-07-25T06:16:57.707865Z" + "iopub.execute_input": "2025-08-30T21:15:34.264307Z", + "iopub.status.busy": "2025-08-30T21:15:34.264231Z", + "iopub.status.idle": "2025-08-30T21:15:34.292867Z", + "shell.execute_reply": "2025-08-30T21:15:34.292628Z" } }, "outputs": [ @@ -577,9 +577,9 @@ "data": { "text/html": [ "\n", - "

class Step pathspec[source]

A `Step` represents a user-defined step, that is, a method annotated with the `@step` decorator.

It contains `Task` objects associated with the step, that is, all executions of the
`Step`. The step may contain multiple `Task`s in the case of a foreach step.

Attributes
----------
task : Task
    The first `Task` object in this step. This is a shortcut for retrieving the only
    task contained in a non-foreach step.
finished_at : datetime
    Time when the latest `Task` of this step finished. Note that in the case of foreaches,
    this time may change during execution of the step.
environment_info : Dict[str, Any]
    Information about the execution environment.

\n", + "

class Step pathspec[source]

A `Step` represents a user-defined step, that is, a method annotated with the `@step` decorator.

It contains `Task` objects associated with the step, that is, all executions of the
`Step`. The step may contain multiple `Task`s in the case of a foreach step.

Attributes
----------
task : Task
    The first `Task` object in this step. This is a shortcut for retrieving the only
    task contained in a non-foreach step.
finished_at : datetime
    Time when the latest `Task` of this step finished. Note that in the case of foreaches,
    this time may change during execution of the step.
environment_info : Dict[str, Any]
    Information about the execution environment.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -592,7 +592,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -618,10 +618,10 @@ "id": "43db4359", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.710327Z", - "iopub.status.busy": "2024-07-25T06:16:57.710242Z", - "iopub.status.idle": "2024-07-25T06:16:57.721477Z", - "shell.execute_reply": "2024-07-25T06:16:57.721224Z" + "iopub.execute_input": "2025-08-30T21:15:34.295342Z", + "iopub.status.busy": "2025-08-30T21:15:34.295232Z", + "iopub.status.idle": "2025-08-30T21:15:34.307456Z", + "shell.execute_reply": "2025-08-30T21:15:34.307239Z" } }, "outputs": [ @@ -629,9 +629,9 @@ "data": { "text/html": [ "\n", - "

class Task pathspec, attempt=None[source]

A `Task` represents an execution of a `Step`.

It contains all `DataArtifact` objects produced by the task as
well as metadata related to execution.

Note that the `@retry` decorator may cause multiple attempts of
the task to be present. Usually you want the latest attempt, which
is what instantiating a `Task` object returns by default. If
you need to e.g. retrieve logs from a failed attempt, you can
explicitly get information about a specific attempt by using the
following syntax when creating a task:

`Task('flow/run/step/task', attempt=)`

where `attempt=0` corresponds to the first attempt etc.

Attributes
----------
metadata : List[Metadata]
    List of all metadata events associated with the task.
metadata_dict : Dict[str, str]
    A condensed version of `metadata`: A dictionary where keys
    are names of metadata events and values the latest corresponding event.
data : MetaflowData
    Container of all data artifacts produced by this task. Note that this
    call downloads all data locally, so it can be slower than accessing
    artifacts individually. See `MetaflowData` for more information.
artifacts : MetaflowArtifacts
    Container of `DataArtifact` objects produced by this task.
successful : bool
    True if the task completed successfully.
finished : bool
    True if the task completed.
exception : object
    Exception raised by this task if there was one.
finished_at : datetime
    Time this task finished.
runtime_name : str
    Runtime this task was executed on.
stdout : str
    Standard output for the task execution.
stderr : str
    Standard error output for the task execution.
code : MetaflowCode
    Code package for this task (if present). See `MetaflowCode`.
environment_info : Dict[str, str]
    Information about the execution environment.

\n", + "

class Task pathspec, attempt=None[source]

A `Task` represents an execution of a `Step`.

It contains all `DataArtifact` objects produced by the task as
well as metadata related to execution.

Note that the `@retry` decorator may cause multiple attempts of
the task to be present. Usually you want the latest attempt, which
is what instantiating a `Task` object returns by default. If
you need to e.g. retrieve logs from a failed attempt, you can
explicitly get information about a specific attempt by using the
following syntax when creating a task:

`Task('flow/run/step/task', attempt=)`

where `attempt=0` corresponds to the first attempt etc.

Attributes
----------
metadata : List[Metadata]
    List of all metadata events associated with the task.
metadata_dict : Dict[str, str]
    A condensed version of `metadata`: A dictionary where keys
    are names of metadata events and values the latest corresponding event.
data : MetaflowData
    Container of all data artifacts produced by this task. Note that this
    call downloads all data locally, so it can be slower than accessing
    artifacts individually. See `MetaflowData` for more information.
artifacts : MetaflowArtifacts
    Container of `DataArtifact` objects produced by this task.
successful : bool
    True if the task completed successfully.
finished : bool
    True if the task completed.
exception : object
    Exception raised by this task if there was one.
finished_at : datetime
    Time this task finished.
runtime_name : str
    Runtime this task was executed on.
stdout : str
    Standard output for the task execution.
stderr : str
    Standard error output for the task execution.
code : MetaflowCode
    Code package for this task (if present). See `MetaflowCode`.
environment_info : Dict[str, str]
    Information about the execution environment.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -654,7 +654,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 13, @@ -672,10 +672,10 @@ "id": "fdb93b31", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.723708Z", - "iopub.status.busy": "2024-07-25T06:16:57.723614Z", - "iopub.status.idle": "2024-07-25T06:16:57.726284Z", - "shell.execute_reply": "2024-07-25T06:16:57.726052Z" + "iopub.execute_input": "2025-08-30T21:15:34.309351Z", + "iopub.status.busy": "2025-08-30T21:15:34.309246Z", + "iopub.status.idle": "2025-08-30T21:15:34.312013Z", + "shell.execute_reply": "2025-08-30T21:15:34.311807Z" } }, "outputs": [ @@ -683,9 +683,9 @@ "data": { "text/html": [ "\n", - "

method Task.loglines (self, stream: str, as_unicode: bool = True, meta_dict: Optional[Dict[str, Any]] = None) -> Iterator[Tuple[datetime.datetime, str]][source]

Return an iterator over (utc_timestamp, logline) tuples.

Parameters
----------
stream : str
    Either 'stdout' or 'stderr'.
as_unicode : bool, default: True
    If as_unicode=False, each logline is returned as a byte object. Otherwise,
    it is returned as a (unicode) string.

Yields
------
Tuple[datetime, str]
    Tuple of timestamp, logline pairs.

\n", + "

method Task.loglines (self, stream: str, as_unicode: bool = True, meta_dict: Optional[Dict[str, Any]] = None) -> Iterator[Tuple[datetime.datetime, str]][source]

Return an iterator over (utc_timestamp, logline) tuples.

Parameters
----------
stream : str
    Either 'stdout' or 'stderr'.
as_unicode : bool, default: True
    If as_unicode=False, each logline is returned as a byte object. Otherwise,
    it is returned as a (unicode) string.

Yields
------
Tuple[datetime, str]
    Tuple of timestamp, logline pairs.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -700,7 +700,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -726,10 +726,10 @@ "id": "5dad835f", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.728300Z", - "iopub.status.busy": "2024-07-25T06:16:57.728224Z", - "iopub.status.idle": "2024-07-25T06:16:57.756648Z", - "shell.execute_reply": "2024-07-25T06:16:57.756377Z" + "iopub.execute_input": "2025-08-30T21:15:34.314169Z", + "iopub.status.busy": "2025-08-30T21:15:34.314096Z", + "iopub.status.idle": "2025-08-30T21:15:34.322538Z", + "shell.execute_reply": "2025-08-30T21:15:34.322307Z" } }, "outputs": [ @@ -737,9 +737,9 @@ "data": { "text/html": [ "\n", - "

class DataArtifact pathspec[source]

A single data artifact and associated metadata. Note that this object does
not contain other objects as it is the leaf object in the hierarchy.

Attributes
----------
data : object
    The data contained in this artifact, that is, the object produced during
    execution of this run.
sha : string
    A unique ID of this artifact.
finished_at : datetime
    Corresponds roughly to the `Task.finished_at` time of the parent `Task`.
    An alias for `DataArtifact.created_at`.

\n", + "

class DataArtifact pathspec[source]

A single data artifact and associated metadata. Note that this object does
not contain other objects as it is the leaf object in the hierarchy.

Attributes
----------
data : object
    The data contained in this artifact, that is, the object produced during
    execution of this run.
sha : string
    A unique ID of this artifact.
finished_at : datetime
    Corresponds roughly to the `Task.finished_at` time of the parent `Task`.
    An alias for `DataArtifact.created_at`.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -752,7 +752,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 15, @@ -786,10 +786,10 @@ "id": "7c6ef99c", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.759463Z", - "iopub.status.busy": "2024-07-25T06:16:57.759351Z", - "iopub.status.idle": "2024-07-25T06:16:57.767882Z", - "shell.execute_reply": "2024-07-25T06:16:57.767632Z" + "iopub.execute_input": "2025-08-30T21:15:34.324196Z", + "iopub.status.busy": "2025-08-30T21:15:34.324134Z", + "iopub.status.idle": "2025-08-30T21:15:34.332486Z", + "shell.execute_reply": "2025-08-30T21:15:34.332290Z" } }, "outputs": [ @@ -797,9 +797,9 @@ "data": { "text/html": [ "\n", - "

class MetaflowData [source]

Container of data artifacts produced by a `Task`. This object is
instantiated through `Task.data`.

`MetaflowData` allows results to be retrieved by their name
through a convenient dot notation:

```python
Task(...).data.my_object
```

You can also test the existence of an object

```python
if 'my_object' in Task(...).data:
    print('my_object found')
```

Note that this container relies on the local cache to load all data
artifacts. If your `Task` contains a lot of data, a more efficient
approach is to load artifacts individually like so

```
Task(...)['my_object'].data
```

\n", + "

class MetaflowData [source]

Container of data artifacts produced by a `Task`. This object is
instantiated through `Task.data`.

`MetaflowData` allows results to be retrieved by their name
through a convenient dot notation:

```python
Task(...).data.my_object
```

You can also test the existence of an object

```python
if 'my_object' in Task(...).data:
    print('my_object found')
```

Note that this container relies on the local cache to load all data
artifacts. If your `Task` contains a lot of data, a more efficient
approach is to load artifacts individually like so

```
Task(...)['my_object'].data
```

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -808,7 +808,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -837,10 +837,10 @@ "id": "5f454538", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.770085Z", - "iopub.status.busy": "2024-07-25T06:16:57.769991Z", - "iopub.status.idle": "2024-07-25T06:16:57.777954Z", - "shell.execute_reply": "2024-07-25T06:16:57.777737Z" + "iopub.execute_input": "2025-08-30T21:15:34.334413Z", + "iopub.status.busy": "2025-08-30T21:15:34.334334Z", + "iopub.status.idle": "2025-08-30T21:15:34.342310Z", + "shell.execute_reply": "2025-08-30T21:15:34.342123Z" } }, "outputs": [ @@ -848,9 +848,9 @@ "data": { "text/html": [ "\n", - "

class MetaflowCode [source]

Snapshot of the code used to execute this `Run`. Instantiate the object through
`Run(...).code` (if any step is executed remotely) or `Task(...).code` for an
individual task. The code package is the same for all steps of a `Run`.

`MetaflowCode` includes a package of the user-defined `FlowSpec` class and supporting
files, as well as a snapshot of the Metaflow library itself.

Currently, `MetaflowCode` objects are stored only for `Run`s that have at least one `Step`
executing outside the user's local environment.

The `TarFile` for the `Run` is given by `Run(...).code.tarball`

Attributes
----------
path : str
    Location (in the datastore provider) of the code package.
info : Dict[str, str]
    Dictionary of information related to this code-package.
flowspec : str
    Source code of the file containing the `FlowSpec` in this code package.
tarball : TarFile
    Python standard library `tarfile.TarFile` archive containing all the code.

\n", + "

class MetaflowCode [source]

Snapshot of the code used to execute this `Run`. Instantiate the object through
`Run(...).code` (if any step is executed remotely) or `Task(...).code` for an
individual task. The code package is the same for all steps of a `Run`.

`MetaflowCode` includes a package of the user-defined `FlowSpec` class and supporting
files, as well as a snapshot of the Metaflow library itself.

Currently, `MetaflowCode` objects are stored only for `Run`s that have at least one `Step`
executing outside the user's local environment.

The `TarFile` for the `Run` is given by `Run(...).code.tarball`

Attributes
----------
path : str
    Location (in the datastore provider) of the code package.
info : Dict[str, str]
    Dictionary of information related to this code-package.
flowspec : str
    Source code of the file containing the `FlowSpec` in this code package.
tarball : TarFile
    Python standard library `tarfile.TarFile` archive containing all the code.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -864,7 +864,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 17, @@ -906,10 +906,10 @@ "id": "b3817f2e", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.780159Z", - "iopub.status.busy": "2024-07-25T06:16:57.780077Z", - "iopub.status.idle": "2024-07-25T06:16:57.782016Z", - "shell.execute_reply": "2024-07-25T06:16:57.781773Z" + "iopub.execute_input": "2025-08-30T21:15:34.344395Z", + "iopub.status.busy": "2025-08-30T21:15:34.344323Z", + "iopub.status.idle": "2025-08-30T21:15:34.346104Z", + "shell.execute_reply": "2025-08-30T21:15:34.345924Z" } }, "outputs": [ @@ -930,7 +930,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 18, @@ -948,10 +948,10 @@ "id": "9192a187", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.784284Z", - "iopub.status.busy": "2024-07-25T06:16:57.784201Z", - "iopub.status.idle": "2024-07-25T06:16:57.785987Z", - "shell.execute_reply": "2024-07-25T06:16:57.785765Z" + "iopub.execute_input": "2025-08-30T21:15:34.348085Z", + "iopub.status.busy": "2025-08-30T21:15:34.348008Z", + "iopub.status.idle": "2025-08-30T21:15:34.349803Z", + "shell.execute_reply": "2025-08-30T21:15:34.349627Z" } }, "outputs": [ @@ -972,7 +972,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 19, @@ -990,10 +990,10 @@ "id": "97c20808", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.788415Z", - "iopub.status.busy": "2024-07-25T06:16:57.788332Z", - "iopub.status.idle": "2024-07-25T06:16:57.790307Z", - "shell.execute_reply": "2024-07-25T06:16:57.790084Z" + "iopub.execute_input": "2025-08-30T21:15:34.351773Z", + "iopub.status.busy": "2025-08-30T21:15:34.351703Z", + "iopub.status.idle": "2025-08-30T21:15:34.353443Z", + "shell.execute_reply": "2025-08-30T21:15:34.353245Z" } }, "outputs": [ @@ -1014,7 +1014,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 20, @@ -1032,10 +1032,10 @@ "id": "ba6912f9", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.792604Z", - "iopub.status.busy": "2024-07-25T06:16:57.792522Z", - "iopub.status.idle": "2024-07-25T06:16:57.794500Z", - "shell.execute_reply": "2024-07-25T06:16:57.794291Z" + "iopub.execute_input": "2025-08-30T21:15:34.355344Z", + "iopub.status.busy": "2025-08-30T21:15:34.355268Z", + "iopub.status.idle": "2025-08-30T21:15:34.357097Z", + "shell.execute_reply": "2025-08-30T21:15:34.356915Z" } }, "outputs": [ @@ -1056,7 +1056,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 21, @@ -1074,10 +1074,10 @@ "id": "dc2fb830", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.796609Z", - "iopub.status.busy": "2024-07-25T06:16:57.796507Z", - "iopub.status.idle": "2024-07-25T06:16:57.799713Z", - "shell.execute_reply": "2024-07-25T06:16:57.799471Z" + "iopub.execute_input": "2025-08-30T21:15:34.359290Z", + "iopub.status.busy": "2025-08-30T21:15:34.359208Z", + "iopub.status.idle": "2025-08-30T21:15:34.362117Z", + "shell.execute_reply": "2025-08-30T21:15:34.361899Z" } }, "outputs": [ @@ -1098,7 +1098,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 22, @@ -1126,10 +1126,10 @@ "id": "249a8772", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.801634Z", - "iopub.status.busy": "2024-07-25T06:16:57.801535Z", - "iopub.status.idle": "2024-07-25T06:16:57.804565Z", - "shell.execute_reply": "2024-07-25T06:16:57.804334Z" + "iopub.execute_input": "2025-08-30T21:15:34.363785Z", + "iopub.status.busy": "2025-08-30T21:15:34.363708Z", + "iopub.status.idle": "2025-08-30T21:15:34.366285Z", + "shell.execute_reply": "2025-08-30T21:15:34.366095Z" } }, "outputs": [ @@ -1153,7 +1153,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 23, @@ -1179,10 +1179,10 @@ "id": "a8ff9d8a", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.806732Z", - "iopub.status.busy": "2024-07-25T06:16:57.806634Z", - "iopub.status.idle": "2024-07-25T06:16:57.809064Z", - "shell.execute_reply": "2024-07-25T06:16:57.808806Z" + "iopub.execute_input": "2025-08-30T21:15:34.368385Z", + "iopub.status.busy": "2025-08-30T21:15:34.368310Z", + "iopub.status.idle": "2025-08-30T21:15:34.370367Z", + "shell.execute_reply": "2025-08-30T21:15:34.370185Z" } }, "outputs": [ @@ -1190,9 +1190,9 @@ "data": { "text/html": [ "\n", - "

function namespace (ns: Optional[str]) -> Optional[str][source]

metaflow

Switch namespace to the one provided.

This call has a global effect. No objects outside this namespace
will be accessible. To access all objects regardless of namespaces,
pass None to this call.

Parameters
----------
ns : str, optional
    Namespace to switch to or None to ignore namespaces.

Returns
-------
str, optional
    Namespace set (result of get_namespace()).

\n", + "

function namespace (ns: Optional[str]) -> Optional[str][source]

metaflow

Switch namespace to the one provided.

This call has a global effect. No objects outside this namespace
will be accessible. To access all objects regardless of namespaces,
pass None to this call.

Parameters
----------
ns : str, optional
    Namespace to switch to or None to ignore namespaces.

Returns
-------
str, optional
    Namespace set (result of get_namespace()).

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -1206,7 +1206,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 24, @@ -1226,10 +1226,10 @@ "id": "864e244f", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.811079Z", - "iopub.status.busy": "2024-07-25T06:16:57.810986Z", - "iopub.status.idle": "2024-07-25T06:16:57.813253Z", - "shell.execute_reply": "2024-07-25T06:16:57.813026Z" + "iopub.execute_input": "2025-08-30T21:15:34.372382Z", + "iopub.status.busy": "2025-08-30T21:15:34.372311Z", + "iopub.status.idle": "2025-08-30T21:15:34.374187Z", + "shell.execute_reply": "2025-08-30T21:15:34.373997Z" } }, "outputs": [ @@ -1237,9 +1237,9 @@ "data": { "text/html": [ "\n", - "

function get_namespace () -> Optional[str][source]

Return the current namespace that is currently being used to filter objects.

The namespace is a tag associated with all objects in Metaflow.

Returns
-------
str, optional
    The current namespace used to filter objects.

\n", + "

function get_namespace () -> Optional[str][source]

Return the current namespace that is currently being used to filter objects.

The namespace is a tag associated with all objects in Metaflow.

Returns
-------
str, optional
    The current namespace used to filter objects.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -1250,7 +1250,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 25, @@ -1268,10 +1268,10 @@ "id": "af4a31de", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.815463Z", - "iopub.status.busy": "2024-07-25T06:16:57.815378Z", - "iopub.status.idle": "2024-07-25T06:16:57.817523Z", - "shell.execute_reply": "2024-07-25T06:16:57.817314Z" + "iopub.execute_input": "2025-08-30T21:15:34.376172Z", + "iopub.status.busy": "2025-08-30T21:15:34.376103Z", + "iopub.status.idle": "2025-08-30T21:15:34.377994Z", + "shell.execute_reply": "2025-08-30T21:15:34.377792Z" } }, "outputs": [ @@ -1279,9 +1279,9 @@ "data": { "text/html": [ "\n", - "

function default_namespace () -> str[source]

Resets the namespace used to filter objects to the default one, i.e. the one that was
used prior to any `namespace` calls.

Returns
-------
str
    The result of get_namespace() after the namespace has been reset.

\n", + "

function default_namespace () -> str[source]

Resets the namespace used to filter objects to the default one, i.e. the one that was
used prior to any `namespace` calls.

Returns
-------
str
    The result of get_namespace() after the namespace has been reset.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -1292,7 +1292,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 26, @@ -1318,10 +1318,10 @@ "id": "4b040aaf", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.819632Z", - "iopub.status.busy": "2024-07-25T06:16:57.819555Z", - "iopub.status.idle": "2024-07-25T06:16:57.822062Z", - "shell.execute_reply": "2024-07-25T06:16:57.821854Z" + "iopub.execute_input": "2025-08-30T21:15:34.379743Z", + "iopub.status.busy": "2025-08-30T21:15:34.379670Z", + "iopub.status.idle": "2025-08-30T21:15:34.381764Z", + "shell.execute_reply": "2025-08-30T21:15:34.381588Z" } }, "outputs": [ @@ -1329,9 +1329,9 @@ "data": { "text/html": [ "\n", - "

function metadata (ms: str) -> str[source]

Switch Metadata provider.

This call has a global effect. Selecting the local metadata will,
for example, not allow access to information stored in remote
metadata providers.

Note that you don't typically have to call this function directly. Usually
the metadata provider is set through the Metaflow configuration file. If you
need to switch between multiple providers, you can use the `METAFLOW_PROFILE`
environment variable to switch between configurations.

Parameters
----------
ms : str
    Can be a path (selects local metadata), a URL starting with http (selects
    the service metadata) or an explicit specification @; as an
    example, you can specify local@ or service@.

Returns
-------
str
    The description of the metadata selected (equivalent to the result of
    get_metadata()).

\n", + "

function metadata (ms: str) -> str[source]

Switch Metadata provider.

This call has a global effect. Selecting the local metadata will,
for example, not allow access to information stored in remote
metadata providers.

Note that you don't typically have to call this function directly. Usually
the metadata provider is set through the Metaflow configuration file. If you
need to switch between multiple providers, you can use the `METAFLOW_PROFILE`
environment variable to switch between configurations.

Parameters
----------
ms : str
    Can be a path (selects local metadata), a URL starting with http (selects
    the service metadata) or an explicit specification @; as an
    example, you can specify local@ or service@.

Returns
-------
str
    The description of the metadata selected (equivalent to the result of
    get_metadata()).

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -1345,7 +1345,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 27, @@ -1365,10 +1365,10 @@ "id": "940db9bf", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.824057Z", - "iopub.status.busy": "2024-07-25T06:16:57.823981Z", - "iopub.status.idle": "2024-07-25T06:16:57.826138Z", - "shell.execute_reply": "2024-07-25T06:16:57.825906Z" + "iopub.execute_input": "2025-08-30T21:15:34.383755Z", + "iopub.status.busy": "2025-08-30T21:15:34.383679Z", + "iopub.status.idle": "2025-08-30T21:15:34.385722Z", + "shell.execute_reply": "2025-08-30T21:15:34.385540Z" } }, "outputs": [ @@ -1376,9 +1376,9 @@ "data": { "text/html": [ "\n", - "

function get_metadata () -> str[source]

Returns the current Metadata provider.

If this is not set explicitly using `metadata`, the default value is
determined through the Metaflow configuration. You can use this call to
check that your configuration is set up properly.

If multiple configuration profiles are present, this call returns the one
selected through the `METAFLOW_PROFILE` environment variable.

Returns
-------
str
    Information about the Metadata provider currently selected. This information typically
    returns provider specific information (like URL for remote providers or local paths for
    local providers).

\n", + "

function get_metadata () -> str[source]

Returns the current Metadata provider.

If this is not set explicitly using `metadata`, the default value is
determined through the Metaflow configuration. You can use this call to
check that your configuration is set up properly.

If multiple configuration profiles are present, this call returns the one
selected through the `METAFLOW_PROFILE` environment variable.

Returns
-------
str
    Information about the Metadata provider currently selected. This information typically
    returns provider specific information (like URL for remote providers or local paths for
    local providers).

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -1389,7 +1389,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 28, @@ -1407,10 +1407,10 @@ "id": "4fa4b981", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.828277Z", - "iopub.status.busy": "2024-07-25T06:16:57.828192Z", - "iopub.status.idle": "2024-07-25T06:16:57.830401Z", - "shell.execute_reply": "2024-07-25T06:16:57.830156Z" + "iopub.execute_input": "2025-08-30T21:15:34.387335Z", + "iopub.status.busy": "2025-08-30T21:15:34.387263Z", + "iopub.status.idle": "2025-08-30T21:15:34.389237Z", + "shell.execute_reply": "2025-08-30T21:15:34.389046Z" } }, "outputs": [ @@ -1418,9 +1418,9 @@ "data": { "text/html": [ "\n", - "

function default_metadata () -> str[source]

Resets the Metadata provider to the default value, that is, to the value
that was used prior to any `metadata` calls.

Returns
-------
str
    The result of get_metadata() after resetting the provider.

\n", + "

function default_metadata () -> str[source]

Resets the Metadata provider to the default value, that is, to the value
that was used prior to any `metadata` calls.

Returns
-------
str
    The result of get_metadata() after resetting the provider.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -1431,7 +1431,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 29, diff --git a/docs/api/client.md b/docs/api/client.md index ccbc679e..7bc31a2f 100644 --- a/docs/api/client.md +++ b/docs/api/client.md @@ -57,9 +57,9 @@ This module accesses all objects through the current metadata provider - either ### Metaflow - + - + @@ -71,7 +71,7 @@ This module accesses all objects through the current metadata provider - either ### Flow - + @@ -84,7 +84,7 @@ This module accesses all objects through the current metadata provider - either - + @@ -101,7 +101,7 @@ This module accesses all objects through the current metadata provider - either ### Run - + @@ -119,7 +119,7 @@ This module accesses all objects through the current metadata provider - either - + @@ -131,7 +131,7 @@ This module accesses all objects through the current metadata provider - either - + @@ -143,7 +143,7 @@ This module accesses all objects through the current metadata provider - either - + @@ -155,7 +155,7 @@ This module accesses all objects through the current metadata provider - either - + @@ -167,7 +167,7 @@ This module accesses all objects through the current metadata provider - either - + @@ -180,7 +180,7 @@ This module accesses all objects through the current metadata provider - either - + @@ -195,7 +195,7 @@ This module accesses all objects through the current metadata provider - either ### Step - + @@ -211,7 +211,7 @@ This module accesses all objects through the current metadata provider - either ### Task - + @@ -235,7 +235,7 @@ This module accesses all objects through the current metadata provider - either - + @@ -253,7 +253,7 @@ This module accesses all objects through the current metadata provider - either ### DataArtifact - + @@ -271,7 +271,7 @@ This module accesses all objects through the current metadata provider - either ### MetaflowData - + @@ -283,7 +283,7 @@ This module accesses all objects through the current metadata provider - either ### MetaflowCode - + @@ -383,7 +383,7 @@ This module accesses all objects through the current metadata provider - either ## Namespace functions - + @@ -398,7 +398,7 @@ This module accesses all objects through the current metadata provider - either - + @@ -410,7 +410,7 @@ This module accesses all objects through the current metadata provider - either - + @@ -424,7 +424,7 @@ This module accesses all objects through the current metadata provider - either ## Metadata functions - + @@ -439,7 +439,7 @@ This module accesses all objects through the current metadata provider - either - + @@ -451,7 +451,7 @@ This module accesses all objects through the current metadata provider - either - + diff --git a/docs/api/current.ipynb b/docs/api/current.ipynb index a038653d..62104611 100644 --- a/docs/api/current.ipynb +++ b/docs/api/current.ipynb @@ -24,10 +24,10 @@ "id": "d4c02781", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:55.863821Z", - "iopub.status.busy": "2024-07-25T06:16:55.863687Z", - "iopub.status.idle": "2024-07-25T06:16:56.135122Z", - "shell.execute_reply": "2024-07-25T06:16:56.134781Z" + "iopub.execute_input": "2025-08-30T21:15:33.477483Z", + "iopub.status.busy": "2025-08-30T21:15:33.477378Z", + "iopub.status.idle": "2025-08-30T21:15:33.691974Z", + "shell.execute_reply": "2025-08-30T21:15:33.691701Z" } }, "outputs": [], @@ -182,10 +182,10 @@ "id": "7fdb7184", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.137589Z", - "iopub.status.busy": "2024-07-25T06:16:56.137412Z", - "iopub.status.idle": "2024-07-25T06:16:56.141437Z", - "shell.execute_reply": "2024-07-25T06:16:56.141114Z" + "iopub.execute_input": "2025-08-30T21:15:33.694080Z", + "iopub.status.busy": "2025-08-30T21:15:33.693946Z", + "iopub.status.idle": "2025-08-30T21:15:33.697285Z", + "shell.execute_reply": "2025-08-30T21:15:33.697054Z" } }, "outputs": [ @@ -204,7 +204,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -222,10 +222,10 @@ "id": "fa61bd9b", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.143388Z", - "iopub.status.busy": "2024-07-25T06:16:56.143306Z", - "iopub.status.idle": "2024-07-25T06:16:56.145573Z", - "shell.execute_reply": "2024-07-25T06:16:56.145253Z" + "iopub.execute_input": "2025-08-30T21:15:33.699015Z", + "iopub.status.busy": "2025-08-30T21:15:33.698947Z", + "iopub.status.idle": "2025-08-30T21:15:33.700861Z", + "shell.execute_reply": "2025-08-30T21:15:33.700644Z" } }, "outputs": [ @@ -244,7 +244,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -262,10 +262,10 @@ "id": "16a90815", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.147932Z", - "iopub.status.busy": "2024-07-25T06:16:56.147823Z", - "iopub.status.idle": "2024-07-25T06:16:56.150134Z", - "shell.execute_reply": "2024-07-25T06:16:56.149852Z" + "iopub.execute_input": "2025-08-30T21:15:33.702968Z", + "iopub.status.busy": "2025-08-30T21:15:33.702879Z", + "iopub.status.idle": "2025-08-30T21:15:33.704809Z", + "shell.execute_reply": "2025-08-30T21:15:33.704599Z" } }, "outputs": [ @@ -284,7 +284,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -302,10 +302,10 @@ "id": "f278667f", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.152471Z", - "iopub.status.busy": "2024-07-25T06:16:56.152367Z", - "iopub.status.idle": "2024-07-25T06:16:56.154533Z", - "shell.execute_reply": "2024-07-25T06:16:56.154202Z" + "iopub.execute_input": "2025-08-30T21:15:33.706887Z", + "iopub.status.busy": "2025-08-30T21:15:33.706808Z", + "iopub.status.idle": "2025-08-30T21:15:33.708595Z", + "shell.execute_reply": "2025-08-30T21:15:33.708410Z" } }, "outputs": [ @@ -324,7 +324,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -342,10 +342,10 @@ "id": "f4be98ad", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.157036Z", - "iopub.status.busy": "2024-07-25T06:16:56.156950Z", - "iopub.status.idle": "2024-07-25T06:16:56.158869Z", - "shell.execute_reply": "2024-07-25T06:16:56.158635Z" + "iopub.execute_input": "2025-08-30T21:15:33.710806Z", + "iopub.status.busy": "2025-08-30T21:15:33.710718Z", + "iopub.status.idle": "2025-08-30T21:15:33.712612Z", + "shell.execute_reply": "2025-08-30T21:15:33.712370Z" } }, "outputs": [ @@ -364,7 +364,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -382,10 +382,10 @@ "id": "a97ad305", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.161044Z", - "iopub.status.busy": "2024-07-25T06:16:56.160962Z", - "iopub.status.idle": "2024-07-25T06:16:56.163040Z", - "shell.execute_reply": "2024-07-25T06:16:56.162796Z" + "iopub.execute_input": "2025-08-30T21:15:33.714609Z", + "iopub.status.busy": "2025-08-30T21:15:33.714522Z", + "iopub.status.idle": "2025-08-30T21:15:33.716373Z", + "shell.execute_reply": "2025-08-30T21:15:33.716154Z" } }, "outputs": [ @@ -404,7 +404,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -422,10 +422,10 @@ "id": "b73e163c", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.165295Z", - "iopub.status.busy": "2024-07-25T06:16:56.165198Z", - "iopub.status.idle": "2024-07-25T06:16:56.167437Z", - "shell.execute_reply": "2024-07-25T06:16:56.167116Z" + "iopub.execute_input": "2025-08-30T21:15:33.718313Z", + "iopub.status.busy": "2025-08-30T21:15:33.718223Z", + "iopub.status.idle": "2025-08-30T21:15:33.720087Z", + "shell.execute_reply": "2025-08-30T21:15:33.719896Z" } }, "outputs": [ @@ -444,7 +444,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -462,10 +462,10 @@ "id": "16dd0a74", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.169732Z", - "iopub.status.busy": "2024-07-25T06:16:56.169604Z", - "iopub.status.idle": "2024-07-25T06:16:56.171888Z", - "shell.execute_reply": "2024-07-25T06:16:56.171650Z" + "iopub.execute_input": "2025-08-30T21:15:33.722134Z", + "iopub.status.busy": "2025-08-30T21:15:33.722045Z", + "iopub.status.idle": "2025-08-30T21:15:33.723923Z", + "shell.execute_reply": "2025-08-30T21:15:33.723719Z" } }, "outputs": [ @@ -484,7 +484,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -502,10 +502,10 @@ "id": "8f758f03", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.174219Z", - "iopub.status.busy": "2024-07-25T06:16:56.174131Z", - "iopub.status.idle": "2024-07-25T06:16:56.176053Z", - "shell.execute_reply": "2024-07-25T06:16:56.175835Z" + "iopub.execute_input": "2025-08-30T21:15:33.726059Z", + "iopub.status.busy": "2025-08-30T21:15:33.725968Z", + "iopub.status.idle": "2025-08-30T21:15:33.727802Z", + "shell.execute_reply": "2025-08-30T21:15:33.727602Z" } }, "outputs": [ @@ -524,7 +524,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 10, @@ -542,10 +542,10 @@ "id": "feaa6830", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.178305Z", - "iopub.status.busy": "2024-07-25T06:16:56.178226Z", - "iopub.status.idle": "2024-07-25T06:16:56.180109Z", - "shell.execute_reply": "2024-07-25T06:16:56.179858Z" + "iopub.execute_input": "2025-08-30T21:15:33.729842Z", + "iopub.status.busy": "2025-08-30T21:15:33.729766Z", + "iopub.status.idle": "2025-08-30T21:15:33.731528Z", + "shell.execute_reply": "2025-08-30T21:15:33.731338Z" } }, "outputs": [ @@ -564,7 +564,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 11, @@ -582,10 +582,10 @@ "id": "66c47292", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.182576Z", - "iopub.status.busy": "2024-07-25T06:16:56.182485Z", - "iopub.status.idle": "2024-07-25T06:16:56.184502Z", - "shell.execute_reply": "2024-07-25T06:16:56.184224Z" + "iopub.execute_input": "2025-08-30T21:15:33.733498Z", + "iopub.status.busy": "2025-08-30T21:15:33.733429Z", + "iopub.status.idle": "2025-08-30T21:15:33.735157Z", + "shell.execute_reply": "2025-08-30T21:15:33.734963Z" } }, "outputs": [ @@ -604,7 +604,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -642,10 +642,10 @@ "id": "437b253d", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.187401Z", - "iopub.status.busy": "2024-07-25T06:16:56.187297Z", - "iopub.status.idle": "2024-07-25T06:16:56.189596Z", - "shell.execute_reply": "2024-07-25T06:16:56.189229Z" + "iopub.execute_input": "2025-08-30T21:15:33.737099Z", + "iopub.status.busy": "2025-08-30T21:15:33.737026Z", + "iopub.status.idle": "2025-08-30T21:15:33.738815Z", + "shell.execute_reply": "2025-08-30T21:15:33.738589Z" } }, "outputs": [ @@ -664,7 +664,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 13, @@ -682,10 +682,10 @@ "id": "fe5e9e0a", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.194090Z", - "iopub.status.busy": "2024-07-25T06:16:56.193991Z", - "iopub.status.idle": "2024-07-25T06:16:56.196057Z", - "shell.execute_reply": "2024-07-25T06:16:56.195807Z" + "iopub.execute_input": "2025-08-30T21:15:33.740858Z", + "iopub.status.busy": "2025-08-30T21:15:33.740785Z", + "iopub.status.idle": "2025-08-30T21:15:33.742463Z", + "shell.execute_reply": "2025-08-30T21:15:33.742312Z" } }, "outputs": [ @@ -704,7 +704,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -722,10 +722,10 @@ "id": "1097fb92", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.198372Z", - "iopub.status.busy": "2024-07-25T06:16:56.198283Z", - "iopub.status.idle": "2024-07-25T06:16:56.200219Z", - "shell.execute_reply": "2024-07-25T06:16:56.199992Z" + "iopub.execute_input": "2025-08-30T21:15:33.744409Z", + "iopub.status.busy": "2025-08-30T21:15:33.744331Z", + "iopub.status.idle": "2025-08-30T21:15:33.746102Z", + "shell.execute_reply": "2025-08-30T21:15:33.745904Z" } }, "outputs": [ @@ -744,7 +744,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 15, @@ -762,10 +762,10 @@ "id": "836d028b", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.202408Z", - "iopub.status.busy": "2024-07-25T06:16:56.202327Z", - "iopub.status.idle": "2024-07-25T06:16:56.204279Z", - "shell.execute_reply": "2024-07-25T06:16:56.204025Z" + "iopub.execute_input": "2025-08-30T21:15:33.748027Z", + "iopub.status.busy": "2025-08-30T21:15:33.747956Z", + "iopub.status.idle": "2025-08-30T21:15:33.749633Z", + "shell.execute_reply": "2025-08-30T21:15:33.749464Z" } }, "outputs": [ @@ -784,7 +784,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -802,10 +802,10 @@ "id": "96348e52", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.206534Z", - "iopub.status.busy": "2024-07-25T06:16:56.206443Z", - "iopub.status.idle": "2024-07-25T06:16:56.208449Z", - "shell.execute_reply": "2024-07-25T06:16:56.208178Z" + "iopub.execute_input": "2025-08-30T21:15:33.751575Z", + "iopub.status.busy": "2025-08-30T21:15:33.751507Z", + "iopub.status.idle": "2025-08-30T21:15:33.753175Z", + "shell.execute_reply": "2025-08-30T21:15:33.752997Z" } }, "outputs": [ @@ -824,7 +824,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 17, @@ -853,10 +853,10 @@ "id": "640602e7", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.210527Z", - "iopub.status.busy": "2024-07-25T06:16:56.210441Z", - "iopub.status.idle": "2024-07-25T06:16:56.212903Z", - "shell.execute_reply": "2024-07-25T06:16:56.212663Z" + "iopub.execute_input": "2025-08-30T21:15:33.755069Z", + "iopub.status.busy": "2025-08-30T21:15:33.754992Z", + "iopub.status.idle": "2025-08-30T21:15:33.757088Z", + "shell.execute_reply": "2025-08-30T21:15:33.756902Z" } }, "outputs": [ @@ -880,7 +880,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 18, @@ -898,10 +898,10 @@ "id": "0709cf75", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.214782Z", - "iopub.status.busy": "2024-07-25T06:16:56.214699Z", - "iopub.status.idle": "2024-07-25T06:16:56.216878Z", - "shell.execute_reply": "2024-07-25T06:16:56.216624Z" + "iopub.execute_input": "2025-08-30T21:15:33.759175Z", + "iopub.status.busy": "2025-08-30T21:15:33.759100Z", + "iopub.status.idle": "2025-08-30T21:15:33.761211Z", + "shell.execute_reply": "2025-08-30T21:15:33.760982Z" } }, "outputs": [ @@ -923,7 +923,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 19, @@ -941,10 +941,10 @@ "id": "7ef69ab6", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.218955Z", - "iopub.status.busy": "2024-07-25T06:16:56.218859Z", - "iopub.status.idle": "2024-07-25T06:16:56.220971Z", - "shell.execute_reply": "2024-07-25T06:16:56.220735Z" + "iopub.execute_input": "2025-08-30T21:15:33.763603Z", + "iopub.status.busy": "2025-08-30T21:15:33.763523Z", + "iopub.status.idle": "2025-08-30T21:15:33.765462Z", + "shell.execute_reply": "2025-08-30T21:15:33.765269Z" } }, "outputs": [ @@ -965,7 +965,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 20, @@ -983,10 +983,10 @@ "id": "f667ebcd", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.223189Z", - "iopub.status.busy": "2024-07-25T06:16:56.223109Z", - "iopub.status.idle": "2024-07-25T06:16:56.225221Z", - "shell.execute_reply": "2024-07-25T06:16:56.224988Z" + "iopub.execute_input": "2025-08-30T21:15:33.767715Z", + "iopub.status.busy": "2025-08-30T21:15:33.767622Z", + "iopub.status.idle": "2025-08-30T21:15:33.769603Z", + "shell.execute_reply": "2025-08-30T21:15:33.769420Z" } }, "outputs": [ @@ -1007,7 +1007,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 21, @@ -1025,10 +1025,10 @@ "id": "6d27efa0", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.227442Z", - "iopub.status.busy": "2024-07-25T06:16:56.227348Z", - "iopub.status.idle": "2024-07-25T06:16:56.229481Z", - "shell.execute_reply": "2024-07-25T06:16:56.229231Z" + "iopub.execute_input": "2025-08-30T21:15:33.771806Z", + "iopub.status.busy": "2025-08-30T21:15:33.771729Z", + "iopub.status.idle": "2025-08-30T21:15:33.773607Z", + "shell.execute_reply": "2025-08-30T21:15:33.773413Z" } }, "outputs": [ @@ -1047,7 +1047,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 22, @@ -1065,10 +1065,10 @@ "id": "a7914220", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.231731Z", - "iopub.status.busy": "2024-07-25T06:16:56.231634Z", - "iopub.status.idle": "2024-07-25T06:16:56.233757Z", - "shell.execute_reply": "2024-07-25T06:16:56.233513Z" + "iopub.execute_input": "2025-08-30T21:15:33.775686Z", + "iopub.status.busy": "2025-08-30T21:15:33.775603Z", + "iopub.status.idle": "2025-08-30T21:15:33.777598Z", + "shell.execute_reply": "2025-08-30T21:15:33.777388Z" } }, "outputs": [ @@ -1087,7 +1087,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 23, @@ -1116,10 +1116,10 @@ "id": "2ad67aa6", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.235976Z", - "iopub.status.busy": "2024-07-25T06:16:56.235885Z", - "iopub.status.idle": "2024-07-25T06:16:56.237887Z", - "shell.execute_reply": "2024-07-25T06:16:56.237650Z" + "iopub.execute_input": "2025-08-30T21:15:33.779602Z", + "iopub.status.busy": "2025-08-30T21:15:33.779527Z", + "iopub.status.idle": "2025-08-30T21:15:33.781399Z", + "shell.execute_reply": "2025-08-30T21:15:33.781186Z" } }, "outputs": [ @@ -1138,7 +1138,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 24, diff --git a/docs/api/flow-decorators/conda_base.ipynb b/docs/api/flow-decorators/conda_base.ipynb index 7f0fc10e..679a75cf 100644 --- a/docs/api/flow-decorators/conda_base.ipynb +++ b/docs/api/flow-decorators/conda_base.ipynb @@ -18,10 +18,10 @@ "id": "8d5bb116", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:04.514901Z", - "iopub.status.busy": "2024-07-25T06:17:04.514765Z", - "iopub.status.idle": "2024-07-25T06:17:04.822231Z", - "shell.execute_reply": "2024-07-25T06:17:04.821959Z" + "iopub.execute_input": "2025-08-30T21:15:42.204021Z", + "iopub.status.busy": "2025-08-30T21:15:42.203933Z", + "iopub.status.idle": "2025-08-30T21:15:42.418765Z", + "shell.execute_reply": "2025-08-30T21:15:42.418440Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "29af6ee3", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:04.824518Z", - "iopub.status.busy": "2024-07-25T06:17:04.824364Z", - "iopub.status.idle": "2024-07-25T06:17:04.831032Z", - "shell.execute_reply": "2024-07-25T06:17:04.830771Z" + "iopub.execute_input": "2025-08-30T21:15:42.420813Z", + "iopub.status.busy": "2025-08-30T21:15:42.420687Z", + "iopub.status.idle": "2025-08-30T21:15:42.426806Z", + "shell.execute_reply": "2025-08-30T21:15:42.426571Z" } }, "outputs": [ @@ -51,9 +51,9 @@ "data": { "text/html": [ "\n", - "

decorator @conda_base (...)[source]

metaflow

Specifies the Conda environment for all steps of the flow.

Use `@conda_base` to set common libraries required by all
steps and use `@conda` to specify step-specific additions.

Parameters
----------
packages : Dict[str, str], default {}
    Packages to use for this flow. The key is the name of the package
    and the value is the version to use.
libraries : Dict[str, str], default {}
    Supported for backward compatibility. When used with packages, packages will take precedence.
python : str, optional, default None
    Version of Python to use, e.g. '3.7.4'. A default value of None implies
    that the version used will correspond to the version of the Python interpreter used to start the run.
disabled : bool, default False
    If set to True, disables Conda.

\n", + "

decorator @conda_base (...)[source]

metaflow

Specifies the Conda environment for all steps of the flow.

Use `@conda_base` to set common libraries required by all
steps and use `@conda` to specify step-specific additions.

Parameters
----------
packages : Dict[str, str], default {}
    Packages to use for this flow. The key is the name of the package
    and the value is the version to use.
libraries : Dict[str, str], default {}
    Supported for backward compatibility. When used with packages, packages will take precedence.
python : str, optional, default None
    Version of Python to use, e.g. '3.7.4'. A default value of None implies
    that the version used will correspond to the version of the Python interpreter used to start the run.
disabled : bool, default False
    If set to True, disables Conda.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -67,7 +67,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/flow-decorators/conda_base.md b/docs/api/flow-decorators/conda_base.md index fbce3bef..03f6c25a 100644 --- a/docs/api/flow-decorators/conda_base.md +++ b/docs/api/flow-decorators/conda_base.md @@ -7,7 +7,7 @@ The libraries are installed from [Conda repositories](https://anaconda.org/). Fo - + diff --git a/docs/api/flow-decorators/project.ipynb b/docs/api/flow-decorators/project.ipynb index bc7201a0..98be5a36 100644 --- a/docs/api/flow-decorators/project.ipynb +++ b/docs/api/flow-decorators/project.ipynb @@ -22,10 +22,10 @@ "id": "8d5bb116", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:05.193031Z", - "iopub.status.busy": "2024-07-25T06:17:05.192942Z", - "iopub.status.idle": "2024-07-25T06:17:05.451383Z", - "shell.execute_reply": "2024-07-25T06:17:05.451056Z" + "iopub.execute_input": "2025-08-30T21:15:42.661148Z", + "iopub.status.busy": "2025-08-30T21:15:42.661058Z", + "iopub.status.idle": "2025-08-30T21:15:42.884728Z", + "shell.execute_reply": "2025-08-30T21:15:42.884414Z" } }, "outputs": [], @@ -44,10 +44,10 @@ "id": "29af6ee3", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:05.453564Z", - "iopub.status.busy": "2024-07-25T06:17:05.453413Z", - "iopub.status.idle": "2024-07-25T06:17:05.460020Z", - "shell.execute_reply": "2024-07-25T06:17:05.459767Z" + "iopub.execute_input": "2025-08-30T21:15:42.886778Z", + "iopub.status.busy": "2025-08-30T21:15:42.886633Z", + "iopub.status.idle": "2025-08-30T21:15:42.892851Z", + "shell.execute_reply": "2025-08-30T21:15:42.892669Z" } }, "outputs": [ @@ -59,9 +59,9 @@ "@@ Returns \n", "------- in \n", "Specifies what flows belong to the same project.\n", - "... in the docstring of ProjectDecorator in /Users/ville/src/madhur-metaflow/metaflow/plugins/project_decorator.py.\n", + "... in the docstring of ProjectDecorator in /Users/ville/src/metaflow/metaflow/plugins/project_decorator.py.\n", " warn(msg)\n", - "/Users/ville/mambaforge/envs/docs/lib/python3.11/site-packages/numpydoc/docscrape.py:434: UserWarning: Unknown section Mf Add To Current in the docstring of ProjectDecorator in /Users/ville/src/madhur-metaflow/metaflow/plugins/project_decorator.py.\n", + "/Users/ville/mambaforge/envs/docs/lib/python3.11/site-packages/numpydoc/docscrape.py:434: UserWarning: Unknown section Mf Add To Current in the docstring of ProjectDecorator in /Users/ville/src/metaflow/metaflow/plugins/project_decorator.py.\n", " warn(msg)\n" ] }, @@ -69,7 +69,7 @@ "data": { "text/html": [ "\n", - "

decorator @project (...)[source]

metaflow

Specifies what flows belong to the same project.

A project-specific namespace is created for all flows that
use the same `@project(name)`.

Parameters
----------
name : str
    Project name. Make sure that the name is unique amongst all
    projects that use the same production scheduler. The name may
    contain only lowercase alphanumeric characters and underscores.

MF Add To Current
-----------------
project_name -> str
    The name of the project assigned to this flow, i.e. `X` in `@project(name=X)`.

    @@ Returns
    -------
    str
        Project name.

project_flow_name -> str
    The flow name prefixed with the current project and branch. This name identifies
    the deployment on a production scheduler.

    @@ Returns
    -------
    str
        Flow name prefixed with project information.

branch_name -> str
    The current branch, i.e. `X` in `--branch=X` set during deployment or run.

    @@ Returns
    -------
    str
        Branch name.

is_user_branch -> bool
    True if the flow is deployed without a specific `--branch` or a `--production`
    flag.

    @@ Returns
    -------
    bool
        True if the deployment does not correspond to a specific branch.

is_production -> bool
    True if the flow is deployed with the `--production` flag

    @@ Returns
    -------
    bool
        True if the flow is deployed with `--production`.

\n", + "

decorator @project (...)[source]

metaflow

Specifies what flows belong to the same project.

A project-specific namespace is created for all flows that
use the same `@project(name)`.

Parameters
----------
name : str
    Project name. Make sure that the name is unique amongst all
    projects that use the same production scheduler. The name may
    contain only lowercase alphanumeric characters and underscores.

branch : Optional[str], default None
    The branch to use. If not specified, the branch is set to
    `user.` unless `production` is set to `True`. This can
    also be set on the command line using `--branch` as a top-level option.
    It is an error to specify `branch` in the decorator and on the command line.

production : bool, default False
    Whether or not the branch is the production branch. This can also be set on the
    command line using `--production` as a top-level option. It is an error to specify
    `production` in the decorator and on the command line.
    The project branch name will be:
      - if `branch` is specified:
        - if `production` is True: `prod.`
        - if `production` is False: `test.`
      - if `branch` is not specified:
        - if `production` is True: `prod`
        - if `production` is False: `user.`

MF Add To Current
-----------------
project_name -> str
    The name of the project assigned to this flow, i.e. `X` in `@project(name=X)`.

    @@ Returns
    -------
    str
        Project name.

project_flow_name -> str
    The flow name prefixed with the current project and branch. This name identifies
    the deployment on a production scheduler.

    @@ Returns
    -------
    str
        Flow name prefixed with project information.

branch_name -> str
    The current branch, i.e. `X` in `--branch=X` set during deployment or run.

    @@ Returns
    -------
    str
        Branch name.

is_user_branch -> bool
    True if the flow is deployed without a specific `--branch` or a `--production`
    flag.

    @@ Returns
    -------
    bool
        True if the deployment does not correspond to a specific branch.

is_production -> bool
    True if the flow is deployed with the `--production` flag

    @@ Returns
    -------
    bool
        True if the flow is deployed with `--production`.

\n", "
\n", "\n", "\n", @@ -78,11 +78,13 @@ "\n", "\n", "\t\n", + "\t` unless `production` is set to `True`. This can\\nalso be set on the command line using `--branch` as a top-level option.\\nIt is an error to specify `branch` in the decorator and on the command line.\" />\n", + "\t`\\n - if `production` is False: `test.`\\n - if `branch` is not specified:\\n - if `production` is True: `prod`\\n - if `production` is False: `user.`\" />\n", "\n", "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/flow-decorators/project.md b/docs/api/flow-decorators/project.md index 57990a2c..188ed85e 100644 --- a/docs/api/flow-decorators/project.md +++ b/docs/api/flow-decorators/project.md @@ -18,6 +18,8 @@ For more information, see [Coordinating Larger Metaflow Projects](/production/co + +
diff --git a/docs/api/flow-decorators/schedule.ipynb b/docs/api/flow-decorators/schedule.ipynb index 38f368f5..4d5d3ed4 100644 --- a/docs/api/flow-decorators/schedule.ipynb +++ b/docs/api/flow-decorators/schedule.ipynb @@ -18,10 +18,10 @@ "id": "8d5bb116", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:05.741334Z", - "iopub.status.busy": "2024-07-25T06:17:05.741233Z", - "iopub.status.idle": "2024-07-25T06:17:05.999865Z", - "shell.execute_reply": "2024-07-25T06:17:05.999582Z" + "iopub.execute_input": "2025-08-30T21:15:43.160855Z", + "iopub.status.busy": "2025-08-30T21:15:43.160748Z", + "iopub.status.idle": "2025-08-30T21:15:43.396555Z", + "shell.execute_reply": "2025-08-30T21:15:43.396248Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "29af6ee3", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:06.002165Z", - "iopub.status.busy": "2024-07-25T06:17:06.002025Z", - "iopub.status.idle": "2024-07-25T06:17:06.007063Z", - "shell.execute_reply": "2024-07-25T06:17:06.006812Z" + "iopub.execute_input": "2025-08-30T21:15:43.399331Z", + "iopub.status.busy": "2025-08-30T21:15:43.399179Z", + "iopub.status.idle": "2025-08-30T21:15:43.404109Z", + "shell.execute_reply": "2025-08-30T21:15:43.403864Z" } }, "outputs": [ @@ -68,7 +68,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/flow-decorators/trigger.ipynb b/docs/api/flow-decorators/trigger.ipynb index 42e6c8b1..3a25a4b6 100644 --- a/docs/api/flow-decorators/trigger.ipynb +++ b/docs/api/flow-decorators/trigger.ipynb @@ -18,10 +18,10 @@ "id": "8d5bb116", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:06.204233Z", - "iopub.status.busy": "2024-07-25T06:17:06.204133Z", - "iopub.status.idle": "2024-07-25T06:17:06.488531Z", - "shell.execute_reply": "2024-07-25T06:17:06.488256Z" + "iopub.execute_input": "2025-08-30T21:15:43.661779Z", + "iopub.status.busy": "2025-08-30T21:15:43.661665Z", + "iopub.status.idle": "2025-08-30T21:15:43.884519Z", + "shell.execute_reply": "2025-08-30T21:15:43.884202Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "29af6ee3", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:06.490772Z", - "iopub.status.busy": "2024-07-25T06:17:06.490640Z", - "iopub.status.idle": "2024-07-25T06:17:06.497814Z", - "shell.execute_reply": "2024-07-25T06:17:06.497586Z" + "iopub.execute_input": "2025-08-30T21:15:43.886677Z", + "iopub.status.busy": "2025-08-30T21:15:43.886528Z", + "iopub.status.idle": "2025-08-30T21:15:43.895643Z", + "shell.execute_reply": "2025-08-30T21:15:43.895399Z" } }, "outputs": [ @@ -55,9 +55,9 @@ "@@ Returns \n", "------- in \n", "Specifies the event(s) that this flow depends on.\n", - "... in the docstring of TriggerDecorator in /Users/ville/src/madhur-metaflow/metaflow/plugins/events_decorator.py.\n", + "... in the docstring of TriggerDecorator in /Users/ville/src/metaflow/metaflow/plugins/events_decorator.py.\n", " warn(msg)\n", - "/Users/ville/mambaforge/envs/docs/lib/python3.11/site-packages/numpydoc/docscrape.py:434: UserWarning: Unknown section Mf Add To Current in the docstring of TriggerDecorator in /Users/ville/src/madhur-metaflow/metaflow/plugins/events_decorator.py.\n", + "/Users/ville/mambaforge/envs/docs/lib/python3.11/site-packages/numpydoc/docscrape.py:434: UserWarning: Unknown section Mf Add To Current in the docstring of TriggerDecorator in /Users/ville/src/metaflow/metaflow/plugins/events_decorator.py.\n", " warn(msg)\n" ] }, @@ -65,9 +65,9 @@ "data": { "text/html": [ "\n", - "

decorator @trigger (...)[source]

metaflow

Specifies the event(s) that this flow depends on.

```
@trigger(event='foo')
```
or
```
@trigger(events=['foo', 'bar'])
```

Additionally, you can specify the parameter mappings
to map event payload to Metaflow parameters for the flow.
```
@trigger(event={'name':'foo', 'parameters':{'flow_param': 'event_field'}})
```
or
```
@trigger(events=[{'name':'foo', 'parameters':{'flow_param_1': 'event_field_1'},
                 {'name':'bar', 'parameters':{'flow_param_2': 'event_field_2'}])
```

'parameters' can also be a list of strings and tuples like so:
```
@trigger(event={'name':'foo', 'parameters':['common_name', ('flow_param', 'event_field')]})
```
This is equivalent to:
```
@trigger(event={'name':'foo', 'parameters':{'common_name': 'common_name', 'flow_param': 'event_field'}})
```

Parameters
----------
event : Union[str, Dict[str, Any]], optional, default None
    Event dependency for this flow.
events : List[Union[str, Dict[str, Any]]], default []
    Events dependency for this flow.
options : Dict[str, Any], default {}
    Backend-specific configuration for tuning eventing behavior.

MF Add To Current
-----------------
trigger -> metaflow.events.Trigger
    Returns `Trigger` if the current run is triggered by an event

    @@ Returns
    -------
    Trigger
        `Trigger` if triggered by an event

\n", + "

decorator @trigger (...)[source]

metaflow

Specifies the event(s) that this flow depends on.

```
@trigger(event='foo')
```
or
```
@trigger(events=['foo', 'bar'])
```

Additionally, you can specify the parameter mappings
to map event payload to Metaflow parameters for the flow.
```
@trigger(event={'name':'foo', 'parameters':{'flow_param': 'event_field'}})
```
or
```
@trigger(events=[{'name':'foo', 'parameters':{'flow_param_1': 'event_field_1'},
                 {'name':'bar', 'parameters':{'flow_param_2': 'event_field_2'}])
```

'parameters' can also be a list of strings and tuples like so:
```
@trigger(event={'name':'foo', 'parameters':['common_name', ('flow_param', 'event_field')]})
```
This is equivalent to:
```
@trigger(event={'name':'foo', 'parameters':{'common_name': 'common_name', 'flow_param': 'event_field'}})
```

Parameters
----------
event : Union[str, Dict[str, Any]], optional, default None
    Event dependency for this flow.
events : List[Union[str, Dict[str, Any]]], default []
    Events dependency for this flow.
options : Dict[str, Any], default {}
    Backend-specific configuration for tuning eventing behavior.

MF Add To Current
-----------------
trigger -> metaflow.events.Trigger
    Returns `Trigger` if the current run is triggered by an event

    @@ Returns
    -------
    Trigger
        `Trigger` if triggered by an event

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -80,7 +80,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/flow-decorators/trigger.md b/docs/api/flow-decorators/trigger.md index 4bc09c42..ae7fa99d 100644 --- a/docs/api/flow-decorators/trigger.md +++ b/docs/api/flow-decorators/trigger.md @@ -7,7 +7,7 @@ Read more in [Triggering Flows Based on External Events](/production/event-trigg - + diff --git a/docs/api/flow-decorators/trigger_on_finish.ipynb b/docs/api/flow-decorators/trigger_on_finish.ipynb index 2af718b6..a4edb18e 100644 --- a/docs/api/flow-decorators/trigger_on_finish.ipynb +++ b/docs/api/flow-decorators/trigger_on_finish.ipynb @@ -18,10 +18,10 @@ "id": "8d5bb116", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:06.568582Z", - "iopub.status.busy": "2024-07-25T06:17:06.568499Z", - "iopub.status.idle": "2024-07-25T06:17:06.834174Z", - "shell.execute_reply": "2024-07-25T06:17:06.833777Z" + "iopub.execute_input": "2025-08-30T21:15:44.163175Z", + "iopub.status.busy": "2025-08-30T21:15:44.162638Z", + "iopub.status.idle": "2025-08-30T21:15:44.387772Z", + "shell.execute_reply": "2025-08-30T21:15:44.387508Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "29af6ee3", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:06.836450Z", - "iopub.status.busy": "2024-07-25T06:17:06.836311Z", - "iopub.status.idle": "2024-07-25T06:17:06.843909Z", - "shell.execute_reply": "2024-07-25T06:17:06.843568Z" + "iopub.execute_input": "2025-08-30T21:15:44.389878Z", + "iopub.status.busy": "2025-08-30T21:15:44.389685Z", + "iopub.status.idle": "2025-08-30T21:15:44.397918Z", + "shell.execute_reply": "2025-08-30T21:15:44.397662Z" } }, "outputs": [ @@ -55,9 +55,9 @@ "@@ Returns \n", "------- in \n", "Specifies the flow(s) that this flow depends on.\n", - "... in the docstring of TriggerOnFinishDecorator in /Users/ville/src/madhur-metaflow/metaflow/plugins/events_decorator.py.\n", + "... in the docstring of TriggerOnFinishDecorator in /Users/ville/src/metaflow/metaflow/plugins/events_decorator.py.\n", " warn(msg)\n", - "/Users/ville/mambaforge/envs/docs/lib/python3.11/site-packages/numpydoc/docscrape.py:434: UserWarning: Unknown section Mf Add To Current in the docstring of TriggerOnFinishDecorator in /Users/ville/src/madhur-metaflow/metaflow/plugins/events_decorator.py.\n", + "/Users/ville/mambaforge/envs/docs/lib/python3.11/site-packages/numpydoc/docscrape.py:434: UserWarning: Unknown section Mf Add To Current in the docstring of TriggerOnFinishDecorator in /Users/ville/src/metaflow/metaflow/plugins/events_decorator.py.\n", " warn(msg)\n" ] }, @@ -65,9 +65,9 @@ "data": { "text/html": [ "\n", - "

decorator @trigger_on_finish (...)[source]

metaflow

Specifies the flow(s) that this flow depends on.

```
@trigger_on_finish(flow='FooFlow')
```
or
```
@trigger_on_finish(flows=['FooFlow', 'BarFlow'])
```
This decorator respects the @project decorator and triggers the flow
when upstream runs within the same namespace complete successfully

Additionally, you can specify project aware upstream flow dependencies
by specifying the fully qualified project_flow_name.
```
@trigger_on_finish(flow='my_project.branch.my_branch.FooFlow')
```
or
```
@trigger_on_finish(flows=['my_project.branch.my_branch.FooFlow', 'BarFlow'])
```

You can also specify just the project or project branch (other values will be
inferred from the current project or project branch):
```
@trigger_on_finish(flow={\"name\": \"FooFlow\", \"project\": \"my_project\", \"project_branch\": \"branch\"})
```

Note that `branch` is typically one of:
  - `prod`
  - `user.bob`
  - `test.my_experiment`
  - `prod.staging`

Parameters
----------
flow : Union[str, Dict[str, str]], optional, default None
    Upstream flow dependency for this flow.
flows : List[Union[str, Dict[str, str]]], default []
    Upstream flow dependencies for this flow.
options : Dict[str, Any], default {}
    Backend-specific configuration for tuning eventing behavior.

MF Add To Current
-----------------
trigger -> metaflow.events.Trigger
    Returns `Trigger` if the current run is triggered by an event

    @@ Returns
    -------
    Trigger
        `Trigger` if triggered by an event

\n", + "

decorator @trigger_on_finish (...)[source]

metaflow

Specifies the flow(s) that this flow depends on.

```
@trigger_on_finish(flow='FooFlow')
```
or
```
@trigger_on_finish(flows=['FooFlow', 'BarFlow'])
```
This decorator respects the @project decorator and triggers the flow
when upstream runs within the same namespace complete successfully

Additionally, you can specify project aware upstream flow dependencies
by specifying the fully qualified project_flow_name.
```
@trigger_on_finish(flow='my_project.branch.my_branch.FooFlow')
```
or
```
@trigger_on_finish(flows=['my_project.branch.my_branch.FooFlow', 'BarFlow'])
```

You can also specify just the project or project branch (other values will be
inferred from the current project or project branch):
```
@trigger_on_finish(flow={\"name\": \"FooFlow\", \"project\": \"my_project\", \"project_branch\": \"branch\"})
```

Note that `branch` is typically one of:
  - `prod`
  - `user.bob`
  - `test.my_experiment`
  - `prod.staging`

Parameters
----------
flow : Union[str, Dict[str, str]], optional, default None
    Upstream flow dependency for this flow.
flows : List[Union[str, Dict[str, str]]], default []
    Upstream flow dependencies for this flow.
options : Dict[str, Any], default {}
    Backend-specific configuration for tuning eventing behavior.

MF Add To Current
-----------------
trigger -> metaflow.events.Trigger
    Returns `Trigger` if the current run is triggered by an event

    @@ Returns
    -------
    Trigger
        `Trigger` if triggered by an event

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -80,7 +80,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/flow-decorators/trigger_on_finish.md b/docs/api/flow-decorators/trigger_on_finish.md index be654615..c1a795d2 100644 --- a/docs/api/flow-decorators/trigger_on_finish.md +++ b/docs/api/flow-decorators/trigger_on_finish.md @@ -7,7 +7,7 @@ Read more in [Triggering Flows Based on Other Flows](/production/event-triggerin - + diff --git a/docs/api/flowspec.ipynb b/docs/api/flowspec.ipynb index b0511480..77ba864a 100644 --- a/docs/api/flowspec.ipynb +++ b/docs/api/flowspec.ipynb @@ -46,10 +46,10 @@ "id": "a5ef9454", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:58.863742Z", - "iopub.status.busy": "2024-07-25T06:16:58.863656Z", - "iopub.status.idle": "2024-07-25T06:16:59.136317Z", - "shell.execute_reply": "2024-07-25T06:16:59.136010Z" + "iopub.execute_input": "2025-08-30T21:15:34.465794Z", + "iopub.status.busy": "2025-08-30T21:15:34.465697Z", + "iopub.status.idle": "2025-08-30T21:15:34.685321Z", + "shell.execute_reply": "2025-08-30T21:15:34.685068Z" } }, "outputs": [ @@ -96,10 +96,10 @@ "id": "5ff62112", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.138672Z", - "iopub.status.busy": "2024-07-25T06:16:59.138509Z", - "iopub.status.idle": "2024-07-25T06:16:59.143884Z", - "shell.execute_reply": "2024-07-25T06:16:59.143633Z" + "iopub.execute_input": "2025-08-30T21:15:34.687580Z", + "iopub.status.busy": "2025-08-30T21:15:34.687431Z", + "iopub.status.idle": "2025-08-30T21:15:34.693074Z", + "shell.execute_reply": "2025-08-30T21:15:34.692839Z" } }, "outputs": [ @@ -107,13 +107,13 @@ "data": { "text/html": [ "\n", - "

method FlowSpec.next *dsts, foreach=None[source]

Indicates the next step to execute after this step has completed.

This statement should appear as the last statement of each step, except
the end step.

There are several valid formats to specify the next step:

- Straight-line connection: `self.next(self.next_step)` where `next_step` is a method in
  the current class decorated with the `@step` decorator.

- Static fan-out connection: `self.next(self.step1, self.step2, ...)` where `stepX` are
  methods in the current class decorated with the `@step` decorator.

- Foreach branch:
  ```
  self.next(self.foreach_step, foreach='foreach_iterator')
  ```
  In this situation, `foreach_step` is a method in the current class decorated with the
  `@step` decorator and `foreach_iterator` is a variable name in the current class that
  evaluates to an iterator. A task will be launched for each value in the iterator and
  each task will execute the code specified by the step `foreach_step`.

Parameters
----------
dsts : Callable[..., None]
    One or more methods annotated with `@step`.

Raises
------
InvalidNextException
    Raised if the format of the arguments does not match one of the ones given above.

\n", + "

method FlowSpec.next *dsts, foreach=None, condition=None[source]

Indicates the next step to execute after this step has completed.

This statement should appear as the last statement of each step, except
the end step.

There are several valid formats to specify the next step:

- Straight-line connection: `self.next(self.next_step)` where `next_step` is a method in
  the current class decorated with the `@step` decorator.

- Static fan-out connection: `self.next(self.step1, self.step2, ...)` where `stepX` are
  methods in the current class decorated with the `@step` decorator.

- Foreach branch:
  ```
  self.next(self.foreach_step, foreach='foreach_iterator')
  ```
  In this situation, `foreach_step` is a method in the current class decorated with the
  `@step` decorator and `foreach_iterator` is a variable name in the current class that
  evaluates to an iterator. A task will be launched for each value in the iterator and
  each task will execute the code specified by the step `foreach_step`.

- Switch statement:
  ```
  self.next({\"case1\": self.step_a, \"case2\": self.step_b}, condition='condition_variable')
  ```
  In this situation, `step_a` and `step_b` are methods in the current class decorated
  with the `@step` decorator and `condition_variable` is a variable name in the current
  class. The value of the condition variable determines which step to execute. If the
  value doesn't match any of the dictionary keys, a RuntimeError is raised.

Parameters
----------
dsts : Callable[..., None]
    One or more methods annotated with `@step`.

Raises
------
InvalidNextException
    Raised if the format of the arguments does not match one of the ones given above.

\n", "
\n", - "\n", + "\n", "\n", - "\n", + "\n", "\n", - "\n", + "\n", "\n", "\t\n", "\n", @@ -123,7 +123,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -132,7 +132,7 @@ } ], "source": [ - "ShowDoc(FlowSpec.next, spoofstr=('*dsts, foreach=None'))" + "ShowDoc(FlowSpec.next, spoofstr=('*dsts, foreach=None, condition=None'))" ] }, { @@ -151,10 +151,10 @@ "id": "64fcbf33", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.145679Z", - "iopub.status.busy": "2024-07-25T06:16:59.145585Z", - "iopub.status.idle": "2024-07-25T06:16:59.147692Z", - "shell.execute_reply": "2024-07-25T06:16:59.147438Z" + "iopub.execute_input": "2025-08-30T21:15:34.694981Z", + "iopub.status.busy": "2025-08-30T21:15:34.694886Z", + "iopub.status.idle": "2025-08-30T21:15:34.696944Z", + "shell.execute_reply": "2025-08-30T21:15:34.696668Z" } }, "outputs": [ @@ -173,7 +173,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -191,10 +191,10 @@ "id": "13dacb8d", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.149936Z", - "iopub.status.busy": "2024-07-25T06:16:59.149848Z", - "iopub.status.idle": "2024-07-25T06:16:59.152064Z", - "shell.execute_reply": "2024-07-25T06:16:59.151791Z" + "iopub.execute_input": "2025-08-30T21:15:34.699341Z", + "iopub.status.busy": "2025-08-30T21:15:34.699243Z", + "iopub.status.idle": "2025-08-30T21:15:34.701394Z", + "shell.execute_reply": "2025-08-30T21:15:34.701143Z" } }, "outputs": [ @@ -213,7 +213,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -231,10 +231,10 @@ "id": "684b4601", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.154283Z", - "iopub.status.busy": "2024-07-25T06:16:59.154195Z", - "iopub.status.idle": "2024-07-25T06:16:59.156811Z", - "shell.execute_reply": "2024-07-25T06:16:59.156579Z" + "iopub.execute_input": "2025-08-30T21:15:34.703589Z", + "iopub.status.busy": "2025-08-30T21:15:34.703503Z", + "iopub.status.idle": "2025-08-30T21:15:34.705892Z", + "shell.execute_reply": "2025-08-30T21:15:34.705672Z" } }, "outputs": [ @@ -242,9 +242,9 @@ "data": { "text/html": [ "\n", - "

method FlowSpec.foreach_stack (self) -> Optional[List[Tuple[int, int, Any]]][source]

Returns the current stack of foreach indexes and values for the current step.

Use this information to understand what data is being processed in the current
foreach branch. For example, considering the following code:
```
@step
def root(self):
    self.split_1 = ['a', 'b', 'c']
    self.next(self.nest_1, foreach='split_1')

@step
def nest_1(self):
    self.split_2 = ['d', 'e', 'f', 'g']
    self.next(self.nest_2, foreach='split_2'):

@step
def nest_2(self):
    foo = self.foreach_stack()
```

`foo` will take the following values in the various tasks for nest_2:
```
    [(0, 3, 'a'), (0, 4, 'd')]
    [(0, 3, 'a'), (1, 4, 'e')]
    ...
    [(0, 3, 'a'), (3, 4, 'g')]
    [(1, 3, 'b'), (0, 4, 'd')]
    ...
```
where each tuple corresponds to:

- The index of the task for that level of the loop.
- The number of splits for that level of the loop.
- The value for that level of the loop.

Note that the last tuple returned in a task corresponds to:

- 1st element: value returned by `self.index`.
- 3rd element: value returned by `self.input`.

Returns
-------
List[Tuple[int, int, Any]]
    An array describing the current stack of foreach steps.

\n", + "

method FlowSpec.foreach_stack (self) -> Optional[List[Tuple[int, int, Any]]][source]

Returns the current stack of foreach indexes and values for the current step.

Use this information to understand what data is being processed in the current
foreach branch. For example, considering the following code:
```
@step
def root(self):
    self.split_1 = ['a', 'b', 'c']
    self.next(self.nest_1, foreach='split_1')

@step
def nest_1(self):
    self.split_2 = ['d', 'e', 'f', 'g']
    self.next(self.nest_2, foreach='split_2'):

@step
def nest_2(self):
    foo = self.foreach_stack()
```

`foo` will take the following values in the various tasks for nest_2:
```
    [(0, 3, 'a'), (0, 4, 'd')]
    [(0, 3, 'a'), (1, 4, 'e')]
    ...
    [(0, 3, 'a'), (3, 4, 'g')]
    [(1, 3, 'b'), (0, 4, 'd')]
    ...
```
where each tuple corresponds to:

- The index of the task for that level of the loop.
- The number of splits for that level of the loop.
- The value for that level of the loop.

Note that the last tuple returned in a task corresponds to:

- 1st element: value returned by `self.index`.
- 3rd element: value returned by `self.input`.

Returns
-------
List[Tuple[int, int, Any]]
    An array describing the current stack of foreach steps.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -255,7 +255,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -273,10 +273,10 @@ "id": "e45999eb", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.159193Z", - "iopub.status.busy": "2024-07-25T06:16:59.159095Z", - "iopub.status.idle": "2024-07-25T06:16:59.162186Z", - "shell.execute_reply": "2024-07-25T06:16:59.161965Z" + "iopub.execute_input": "2025-08-30T21:15:34.708202Z", + "iopub.status.busy": "2025-08-30T21:15:34.708118Z", + "iopub.status.idle": "2025-08-30T21:15:34.711204Z", + "shell.execute_reply": "2025-08-30T21:15:34.710996Z" } }, "outputs": [ @@ -284,9 +284,9 @@ "data": { "text/html": [ "\n", - "

method FlowSpec.merge_artifacts (self, inputs: metaflow.datastore.inputs.Inputs, exclude: Optional[List[str]] = None, include: Optional[List[str]] = None) -> None[source]

Helper function for merging artifacts in a join step.

This function takes all the artifacts coming from the branches of a
join point and assigns them to self in the calling step. Only artifacts
not set in the current step are considered. If, for a given artifact, different
values are present on the incoming edges, an error will be thrown and the artifacts
that conflict will be reported.

As a few examples, in the simple graph: A splitting into B and C and joining in D:
```
A:
  self.x = 5
  self.y = 6
B:
  self.b_var = 1
  self.x = from_b
C:
  self.x = from_c

D:
  merge_artifacts(inputs)
```
In D, the following artifacts are set:
  - `y` (value: 6), `b_var` (value: 1)
  - if `from_b` and `from_c` are the same, `x` will be accessible and have value `from_b`
  - if `from_b` and `from_c` are different, an error will be thrown. To prevent this error,
    you need to manually set `self.x` in D to a merged value (for example the max) prior to
    calling `merge_artifacts`.

Parameters
----------
inputs : Inputs
    Incoming steps to the join point.
exclude : List[str], optional, default None
    If specified, do not consider merging artifacts with a name in `exclude`.
    Cannot specify if `include` is also specified.
include : List[str], optional, default None
    If specified, only merge artifacts specified. Cannot specify if `exclude` is
    also specified.

Raises
------
MetaflowException
    This exception is thrown if this is not called in a join step.
UnhandledInMergeArtifactsException
    This exception is thrown in case of unresolved conflicts.
MissingInMergeArtifactsException
    This exception is thrown in case an artifact specified in `include` cannot
    be found.

\n", + "

method FlowSpec.merge_artifacts (self, inputs: metaflow.datastore.inputs.Inputs, exclude: Optional[List[str]] = None, include: Optional[List[str]] = None) -> None[source]

Helper function for merging artifacts in a join step.

This function takes all the artifacts coming from the branches of a
join point and assigns them to self in the calling step. Only artifacts
not set in the current step are considered. If, for a given artifact, different
values are present on the incoming edges, an error will be thrown and the artifacts
that conflict will be reported.

As a few examples, in the simple graph: A splitting into B and C and joining in D:
```
A:
  self.x = 5
  self.y = 6
B:
  self.b_var = 1
  self.x = from_b
C:
  self.x = from_c

D:
  merge_artifacts(inputs)
```
In D, the following artifacts are set:
  - `y` (value: 6), `b_var` (value: 1)
  - if `from_b` and `from_c` are the same, `x` will be accessible and have value `from_b`
  - if `from_b` and `from_c` are different, an error will be thrown. To prevent this error,
    you need to manually set `self.x` in D to a merged value (for example the max) prior to
    calling `merge_artifacts`.

Parameters
----------
inputs : Inputs
    Incoming steps to the join point.
exclude : List[str], optional, default None
    If specified, do not consider merging artifacts with a name in `exclude`.
    Cannot specify if `include` is also specified.
include : List[str], optional, default None
    If specified, only merge artifacts specified. Cannot specify if `exclude` is
    also specified.

Raises
------
MetaflowException
    This exception is thrown if this is not called in a join step.
UnhandledInMergeArtifactsException
    This exception is thrown in case of unresolved conflicts.
MissingInMergeArtifactsException
    This exception is thrown in case an artifact specified in `include` cannot
    be found.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -304,7 +304,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -334,10 +334,10 @@ "id": "bd1c2814", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.163926Z", - "iopub.status.busy": "2024-07-25T06:16:59.163856Z", - "iopub.status.idle": "2024-07-25T06:16:59.169464Z", - "shell.execute_reply": "2024-07-25T06:16:59.169261Z" + "iopub.execute_input": "2025-08-30T21:15:34.713491Z", + "iopub.status.busy": "2025-08-30T21:15:34.713413Z", + "iopub.status.idle": "2025-08-30T21:15:34.720039Z", + "shell.execute_reply": "2025-08-30T21:15:34.719834Z" }, "scrolled": true }, @@ -346,25 +346,25 @@ "data": { "text/html": [ "\n", - "

class Parameter (name: str, default: Union[str, float, int, bool, Dict[str, Any], Callable[[], Union[str, float, int, bool, Dict[str, Any]]], NoneType] = None, type: Union[Type[str], Type[float], Type[int], Type[bool], metaflow.parameters.JSONTypeClass, NoneType] = None, help: Optional[str] = None, required: bool = False, show_default: bool = True, **kwargs: Dict[str, Any])[source]

Defines a parameter for a flow.

Parameters must be instantiated as class variables in flow classes, e.g.
```
class MyFlow(FlowSpec):
    param = Parameter('myparam')
```
in this case, the parameter is specified on the command line as
```
python myflow.py run --myparam=5
```
and its value is accessible through a read-only artifact like this:
```
print(self.param == 5)
```
Note that the user-visible parameter name, `myparam` above, can be
different from the artifact name, `param` above.

The parameter value is converted to a Python type based on the `type`
argument or to match the type of `default`, if it is set.

Parameters
----------
name : str
    User-visible parameter name.
default : str or float or int or bool or `JSONType` or a function.
    Default value for the parameter. Use a special `JSONType` class to
    indicate that the value must be a valid JSON object. A function
    implies that the parameter corresponds to a *deploy-time parameter*.
    The type of the default value is used as the parameter `type`.
type : Type, default None
    If `default` is not specified, define the parameter type. Specify
    one of `str`, `float`, `int`, `bool`, or `JSONType`. If None, defaults
    to the type of `default` or `str` if none specified.
help : str, optional
    Help text to show in `run --help`.
required : bool, default False
    Require that the user specified a value for the parameter.
    `required=True` implies that the `default` is not used.
show_default : bool, default True
    If True, show the default value in the help text.

\n", + "

class Parameter (name: str, default: Union[str, float, int, bool, Dict[str, Any], Callable[[metaflow.parameters.ParameterContext], Union[str, float, int, bool, Dict[str, Any]]], NoneType] = None, type: Union[Type[str], Type[float], Type[int], Type[bool], metaflow.parameters.JSONTypeClass, NoneType] = None, help: Optional[str] = None, required: Optional[bool] = None, show_default: Optional[bool] = None, **kwargs: Dict[str, Any])[source]

Defines a parameter for a flow.

Parameters must be instantiated as class variables in flow classes, e.g.
```
class MyFlow(FlowSpec):
    param = Parameter('myparam')
```
in this case, the parameter is specified on the command line as
```
python myflow.py run --myparam=5
```
and its value is accessible through a read-only artifact like this:
```
print(self.param == 5)
```
Note that the user-visible parameter name, `myparam` above, can be
different from the artifact name, `param` above.

The parameter value is converted to a Python type based on the `type`
argument or to match the type of `default`, if it is set.

Parameters
----------
name : str
    User-visible parameter name.
default : Union[str, float, int, bool, Dict[str, Any],
            Callable[
                [ParameterContext], Union[str, float, int, bool, Dict[str, Any]]
            ],
        ], optional, default None
    Default value for the parameter. Use a special `JSONType` class to
    indicate that the value must be a valid JSON object. A function
    implies that the parameter corresponds to a *deploy-time parameter*.
    The type of the default value is used as the parameter `type`.
type : Type, default None
    If `default` is not specified, define the parameter type. Specify
    one of `str`, `float`, `int`, `bool`, or `JSONType`. If None, defaults
    to the type of `default` or `str` if none specified.
help : str, optional, default None
    Help text to show in `run --help`.
required : bool, optional, default None
    Require that the user specifies a value for the parameter. Note that if
    a default is provide, the required flag is ignored.
    A value of None is equivalent to False.
show_default : bool, optional, default None
    If True, show the default value in the help text. A value of None is equivalent
    to True.

\n", "
\n", - "\n", + "\n", "\n", - "\n", + "\n", "\n", "\n", "\n", "\t\n", - "\t\n", + "\t\n", "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", "\n", "" ], "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -382,10 +382,10 @@ "id": "46b05162", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.171289Z", - "iopub.status.busy": "2024-07-25T06:16:59.171208Z", - "iopub.status.idle": "2024-07-25T06:16:59.172794Z", - "shell.execute_reply": "2024-07-25T06:16:59.172555Z" + "iopub.execute_input": "2025-08-30T21:15:34.721776Z", + "iopub.status.busy": "2025-08-30T21:15:34.721711Z", + "iopub.status.idle": "2025-08-30T21:15:34.723247Z", + "shell.execute_reply": "2025-08-30T21:15:34.723062Z" } }, "outputs": [], @@ -435,10 +435,10 @@ "id": "0b2d482c", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.174707Z", - "iopub.status.busy": "2024-07-25T06:16:59.174616Z", - "iopub.status.idle": "2024-07-25T06:16:59.176984Z", - "shell.execute_reply": "2024-07-25T06:16:59.176727Z" + "iopub.execute_input": "2025-08-30T21:15:34.724966Z", + "iopub.status.busy": "2025-08-30T21:15:34.724888Z", + "iopub.status.idle": "2025-08-30T21:15:34.727078Z", + "shell.execute_reply": "2025-08-30T21:15:34.726857Z" } }, "outputs": [ @@ -461,7 +461,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -489,10 +489,10 @@ "id": "3b674cdb", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.179209Z", - "iopub.status.busy": "2024-07-25T06:16:59.179111Z", - "iopub.status.idle": "2024-07-25T06:16:59.184913Z", - "shell.execute_reply": "2024-07-25T06:16:59.184699Z" + "iopub.execute_input": "2025-08-30T21:15:34.729486Z", + "iopub.status.busy": "2025-08-30T21:15:34.729386Z", + "iopub.status.idle": "2025-08-30T21:15:34.734749Z", + "shell.execute_reply": "2025-08-30T21:15:34.734529Z" } }, "outputs": [ @@ -500,9 +500,9 @@ "data": { "text/html": [ "\n", - "

class IncludeFile name, **kwargs[source]

Includes a local file as a parameter for the flow.

`IncludeFile` behaves like `Parameter` except that it reads its value from a file instead of
the command line. The user provides a path to a file on the command line. The file contents
are saved as a read-only artifact which is available in all steps of the flow.

Parameters
----------
name : str
    User-visible parameter name.
default : Union[str, Callable[ParameterContext, str]]
    Default path to a local file. A function
    implies that the parameter corresponds to a *deploy-time parameter*.
is_text : bool, default True
    Convert the file contents to a string using the provided `encoding`.
    If False, the artifact is stored in `bytes`.
encoding : str, optional, default 'utf-8'
    Use this encoding to decode the file contexts if `is_text=True`.
required : bool, default False
    Require that the user specified a value for the parameter.
    `required=True` implies that the `default` is not used.
help : str, optional
    Help text to show in `run --help`.
show_default : bool, default True
    If True, show the default value in the help text.

\n", + "

class IncludeFile name, **kwargs[source]

Includes a local file as a parameter for the flow.

`IncludeFile` behaves like `Parameter` except that it reads its value from a file instead of
the command line. The user provides a path to a file on the command line. The file contents
are saved as a read-only artifact which is available in all steps of the flow.

Parameters
----------
name : str
    User-visible parameter name.
default : Union[str, Callable[ParameterContext, str]]
    Default path to a local file. A function
    implies that the parameter corresponds to a *deploy-time parameter*.
is_text : bool, optional, default None
    Convert the file contents to a string using the provided `encoding`.
    If False, the artifact is stored in `bytes`. A value of None is equivalent to
    True.
encoding : str, optional, default None
    Use this encoding to decode the file contexts if `is_text=True`. A value of None
    is equivalent to utf-8.
required : bool, optional, default None
    Require that the user specified a value for the parameter.
    `required=True` implies that the `default` is not used. A value of None is
    equivalent to False
help : str, optional
    Help text to show in `run --help`.
show_default : bool, default True
    If True, show the default value in the help text. A value of None is equivalent
    to True.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -510,16 +510,16 @@ "\n", "\t\n", "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", "\t\n", - "\t\n", + "\t\n", "\n", "" ], "text/plain": [ - "" + "" ] }, "execution_count": 10, @@ -542,7 +542,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, diff --git a/docs/api/flowspec.md b/docs/api/flowspec.md index 84873f32..f41d593b 100644 --- a/docs/api/flowspec.md +++ b/docs/api/flowspec.md @@ -33,11 +33,11 @@ To query and manipulate the currently executing run inside your flow, see the [` Annotate methods that are a part of your Metaflow workflow with [the `@step` decorator](/api/step-decorators/step). Use `FlowSpec.next` to define transitions between steps: - + - + - + @@ -72,7 +72,7 @@ Use the operations below, `FlowSpec.input`, `FlowSpec.index`, and `FlowSpec.fore - + @@ -84,7 +84,7 @@ Use the operations below, `FlowSpec.input`, `FlowSpec.index`, and `FlowSpec.fore - + @@ -109,18 +109,18 @@ The `Parameter` class is used to define parameters for a flow. The `Parameter` objects must be defined as class variables inside a flow. The parameter values are available as read-only artifacts in all steps of the flow. For instructions, see [How to define parameters for flows](/metaflow/basics#how-to-define-parameters-for-flows). - + - + - + - - - + + + @@ -160,7 +160,7 @@ The function called gets a parameter `context` that contains attributes about th The `IncludeFile` object is a special `Parameter` that reads its value from a local file. For an example, see [Data in Local Files](/scaling/data#data-in-local-files). - + @@ -168,11 +168,11 @@ The `IncludeFile` object is a special `Parameter` that reads its value from a lo - - - + + + - + diff --git a/docs/api/runner.ipynb b/docs/api/runner.ipynb index c2e7497d..c7055efc 100644 --- a/docs/api/runner.ipynb +++ b/docs/api/runner.ipynb @@ -22,10 +22,10 @@ "id": "d4c02781", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:56.846165Z", - "iopub.status.busy": "2024-07-25T06:16:56.846050Z", - "iopub.status.idle": "2024-07-25T06:16:57.124578Z", - "shell.execute_reply": "2024-07-25T06:16:57.124277Z" + "iopub.execute_input": "2025-08-30T21:15:34.988476Z", + "iopub.status.busy": "2025-08-30T21:15:34.988399Z", + "iopub.status.idle": "2025-08-30T21:15:35.210301Z", + "shell.execute_reply": "2025-08-30T21:15:35.210016Z" } }, "outputs": [], @@ -70,10 +70,10 @@ "id": "7fdb7184", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.127133Z", - "iopub.status.busy": "2024-07-25T06:16:57.126981Z", - "iopub.status.idle": "2024-07-25T06:16:57.135119Z", - "shell.execute_reply": "2024-07-25T06:16:57.134789Z" + "iopub.execute_input": "2025-08-30T21:15:35.212401Z", + "iopub.status.busy": "2025-08-30T21:15:35.212261Z", + "iopub.status.idle": "2025-08-30T21:15:35.220479Z", + "shell.execute_reply": "2025-08-30T21:15:35.220273Z" } }, "outputs": [ @@ -81,25 +81,26 @@ "data": { "text/html": [ "\n", - "

class Runner flow_file, show_output=True, profile=None, env=None, cwd=None, **kwargs[source]

Metaflow's Runner API that presents a programmatic interface
to run flows and perform other operations either synchronously or asynchronously.
The class expects a path to the flow file along with optional arguments
that match top-level options on the command-line.

This class works as a context manager, calling `cleanup()` to remove
temporary files at exit.

Example:
```python
with Runner('slowflow.py', pylint=False) as runner:
    result = runner.run(alpha=5, tags=[\"abc\", \"def\"], max_workers=5)
    print(result.run.finished)
```

Parameters
----------
flow_file : str
    Path to the flow file to run
show_output : bool, default True
    Show the 'stdout' and 'stderr' to the console by default,
    Only applicable for synchronous 'run' and 'resume' functions.
profile : Optional[str], default None
    Metaflow profile to use to run this run. If not specified, the default
    profile is used (or the one already set using `METAFLOW_PROFILE`)
env : Optional[Dict], default None
    Additional environment variables to set for the Run. This overrides the
    environment set for this process.
cwd : Optional[str], default None
    The directory to run the subprocess in; if not specified, the current
    directory is used.
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` before
    the `run` command.

\n", + "

class Runner flow_file, show_output=True, profile=None, env=None, cwd=None, **kwargs[source]

Metaflow's Runner API that presents a programmatic interface
to run flows and perform other operations either synchronously or asynchronously.
The class expects a path to the flow file along with optional arguments
that match top-level options on the command-line.

This class works as a context manager, calling `cleanup()` to remove
temporary files at exit.

Example:
```python
with Runner('slowflow.py', pylint=False) as runner:
    result = runner.run(alpha=5, tags=[\"abc\", \"def\"], max_workers=5)
    print(result.run.finished)
```

Parameters
----------
flow_file : str
    Path to the flow file to run, relative to current directory.
show_output : bool, default True
    Show the 'stdout' and 'stderr' to the console by default,
    Only applicable for synchronous 'run' and 'resume' functions.
profile : str, optional, default None
    Metaflow profile to use to run this run. If not specified, the default
    profile is used (or the one already set using `METAFLOW_PROFILE`)
env : Dict[str, str], optional, default None
    Additional environment variables to set for the Run. This overrides the
    environment set for this process.
cwd : str, optional, default None
    The directory to run the subprocess in; if not specified, the current
    directory is used.
file_read_timeout : int, default 3600
    The timeout until which we try to read the runner attribute file (in seconds).
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` before
    the `run` command.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", "\n", "\n", - "\t\n", + "\t\n", "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "\t\n", "\n", "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, @@ -117,10 +118,10 @@ "id": "84c83820", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.137507Z", - "iopub.status.busy": "2024-07-25T06:16:57.137393Z", - "iopub.status.idle": "2024-07-25T06:16:57.139946Z", - "shell.execute_reply": "2024-07-25T06:16:57.139696Z" + "iopub.execute_input": "2025-08-30T21:15:35.222262Z", + "iopub.status.busy": "2025-08-30T21:15:35.222173Z", + "iopub.status.idle": "2025-08-30T21:15:35.224441Z", + "shell.execute_reply": "2025-08-30T21:15:35.224231Z" } }, "outputs": [ @@ -128,9 +129,9 @@ "data": { "text/html": [ "\n", - "

method Runner.cleanup (self)[source]

Delete any temporary files created during execution.

\n", + "

method Runner.cleanup (self)[source]

Delete any temporary files created during execution.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -139,7 +140,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -167,10 +168,10 @@ "id": "8c61365e", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.142811Z", - "iopub.status.busy": "2024-07-25T06:16:57.142681Z", - "iopub.status.idle": "2024-07-25T06:16:57.145665Z", - "shell.execute_reply": "2024-07-25T06:16:57.145412Z" + "iopub.execute_input": "2025-08-30T21:15:35.226707Z", + "iopub.status.busy": "2025-08-30T21:15:35.226623Z", + "iopub.status.idle": "2025-08-30T21:15:35.228936Z", + "shell.execute_reply": "2025-08-30T21:15:35.228733Z" } }, "outputs": [ @@ -178,9 +179,9 @@ "data": { "text/html": [ "\n", - "

method Runner.run (self, **kwargs) -> metaflow.runner.metaflow_runner.ExecutingRun[source]

Blocking execution of the run. This method will wait until
the run has completed execution.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `run` command, in particular, any parameters accepted by the flow.

Returns
-------
ExecutingRun
    ExecutingRun containing the results of the run.

\n", + "

method Runner.run (self, **kwargs) -> metaflow.runner.metaflow_runner.ExecutingRun[source]

Blocking execution of the run. This method will wait until
the run has completed execution.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `run` command, in particular, any parameters accepted by the flow.

Returns
-------
ExecutingRun
    ExecutingRun containing the results of the run.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -194,7 +195,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 4, @@ -212,10 +213,10 @@ "id": "4fe8757c", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.147705Z", - "iopub.status.busy": "2024-07-25T06:16:57.147607Z", - "iopub.status.idle": "2024-07-25T06:16:57.150376Z", - "shell.execute_reply": "2024-07-25T06:16:57.150071Z" + "iopub.execute_input": "2025-08-30T21:15:35.231042Z", + "iopub.status.busy": "2025-08-30T21:15:35.230953Z", + "iopub.status.idle": "2025-08-30T21:15:35.233324Z", + "shell.execute_reply": "2025-08-30T21:15:35.233126Z" } }, "outputs": [ @@ -223,9 +224,9 @@ "data": { "text/html": [ "\n", - "

method Runner.resume (self, **kwargs)[source]

Blocking resume execution of the run.
This method will wait until the resumed run has completed execution.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python ./myflow.py` after
    the `resume` command.

Returns
-------
ExecutingRun
    ExecutingRun containing the results of the resumed run.

\n", + "

method Runner.resume (self, **kwargs) -> metaflow.runner.metaflow_runner.ExecutingRun[source]

Blocking resume execution of the run.
This method will wait until the resumed run has completed execution.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python ./myflow.py` after
    the `resume` command.

Returns
-------
ExecutingRun
    ExecutingRun containing the results of the resumed run.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -239,7 +240,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 5, @@ -265,10 +266,10 @@ "id": "ec91c1c9", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.152518Z", - "iopub.status.busy": "2024-07-25T06:16:57.152422Z", - "iopub.status.idle": "2024-07-25T06:16:57.155118Z", - "shell.execute_reply": "2024-07-25T06:16:57.154859Z" + "iopub.execute_input": "2025-08-30T21:15:35.235528Z", + "iopub.status.busy": "2025-08-30T21:15:35.235434Z", + "iopub.status.idle": "2025-08-30T21:15:35.237830Z", + "shell.execute_reply": "2025-08-30T21:15:35.237625Z" } }, "outputs": [ @@ -276,9 +277,9 @@ "data": { "text/html": [ "\n", - "

method Runner.async_run (self, **kwargs) -> metaflow.runner.metaflow_runner.ExecutingRun[source]

Non-blocking execution of the run. This method will return as soon as the
run has launched.

Note that this method is asynchronous and needs to be `await`ed.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `run` command, in particular, any parameters accepted by the flow.

Returns
-------
ExecutingRun
    ExecutingRun representing the run that was started.

\n", + "

method Runner.async_run (self, **kwargs) -> metaflow.runner.metaflow_runner.ExecutingRun[source]

Non-blocking execution of the run. This method will return as soon as the
run has launched.

Note that this method is asynchronous and needs to be `await`ed.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `run` command, in particular, any parameters accepted by the flow.

Returns
-------
ExecutingRun
    ExecutingRun representing the run that was started.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -292,7 +293,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 6, @@ -310,10 +311,10 @@ "id": "87f8530a", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.157634Z", - "iopub.status.busy": "2024-07-25T06:16:57.157548Z", - "iopub.status.idle": "2024-07-25T06:16:57.160071Z", - "shell.execute_reply": "2024-07-25T06:16:57.159813Z" + "iopub.execute_input": "2025-08-30T21:15:35.239548Z", + "iopub.status.busy": "2025-08-30T21:15:35.239465Z", + "iopub.status.idle": "2025-08-30T21:15:35.241826Z", + "shell.execute_reply": "2025-08-30T21:15:35.241641Z" } }, "outputs": [ @@ -321,9 +322,9 @@ "data": { "text/html": [ "\n", - "

method Runner.async_resume (self, **kwargs)[source]

Non-blocking resume execution of the run.
This method will return as soon as the resume has launched.

Note that this method is asynchronous and needs to be `await`ed.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `resume` command.

Returns
-------
ExecutingRun
    ExecutingRun representing the resumed run that was started.

\n", + "

method Runner.async_resume (self, **kwargs) -> metaflow.runner.metaflow_runner.ExecutingRun[source]

Non-blocking resume execution of the run.
This method will return as soon as the resume has launched.

Note that this method is asynchronous and needs to be `await`ed.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `resume` command.

Returns
-------
ExecutingRun
    ExecutingRun representing the resumed run that was started.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -337,7 +338,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -365,10 +366,10 @@ "id": "9fb445c1", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.162889Z", - "iopub.status.busy": "2024-07-25T06:16:57.162793Z", - "iopub.status.idle": "2024-07-25T06:16:57.167115Z", - "shell.execute_reply": "2024-07-25T06:16:57.166894Z" + "iopub.execute_input": "2025-08-30T21:15:35.243968Z", + "iopub.status.busy": "2025-08-30T21:15:35.243888Z", + "iopub.status.idle": "2025-08-30T21:15:35.247743Z", + "shell.execute_reply": "2025-08-30T21:15:35.247549Z" } }, "outputs": [ @@ -376,9 +377,9 @@ "data": { "text/html": [ "\n", - "

class NBRunner flow, show_output=True, profile=None, env=None, base_dir=None, **kwargs[source]

A  wrapper over `Runner` for executing flows defined in a Jupyter
notebook cell.

Instantiate this class on the last line of a notebook cell where
a `flow` is defined. In contrast to `Runner`, this class is not
meant to be used in a context manager. Instead, use a blocking helper
function like `nbrun` (which calls `cleanup()` internally) or call
`cleanup()` explictly when using non-blocking APIs.

```python
run = NBRunner(FlowName).nbrun()
```

Parameters
----------
flow : FlowSpec
    Flow defined in the same cell
show_output : bool, default True
    Show the 'stdout' and 'stderr' to the console by default,
    Only applicable for synchronous 'run' and 'resume' functions.
profile : Optional[str], default None
    Metaflow profile to use to run this run. If not specified, the default
    profile is used (or the one already set using `METAFLOW_PROFILE`)
env : Optional[Dict], default None
    Additional environment variables to set for the Run. This overrides the
    environment set for this process.
base_dir : Optional[str], default None
    The directory to run the subprocess in; if not specified, a temporary
    directory is used.
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` before
    the `run` command.

\n", + "

class NBRunner flow, show_output=True, profile=None, env=None, base_dir=None, **kwargs[source]

A  wrapper over `Runner` for executing flows defined in a Jupyter
notebook cell.

Instantiate this class on the last line of a notebook cell where
a `flow` is defined. In contrast to `Runner`, this class is not
meant to be used in a context manager. Instead, use a blocking helper
function like `nbrun` (which calls `cleanup()` internally) or call
`cleanup()` explictly when using non-blocking APIs.

```python
run = NBRunner(FlowName).nbrun()
```

Parameters
----------
flow : FlowSpec
    Flow defined in the same cell
show_output : bool, default True
    Show the 'stdout' and 'stderr' to the console by default,
    Only applicable for synchronous 'run' and 'resume' functions.
profile : str, optional, default None
    Metaflow profile to use to run this run. If not specified, the default
    profile is used (or the one already set using `METAFLOW_PROFILE`)
env : Dict[str, str], optional, default None
    Additional environment variables to set for the Run. This overrides the
    environment set for this process.
base_dir : str, optional, default None
    The directory to run the subprocess in; if not specified, the current
    working directory is used.
file_read_timeout : int, default 3600
    The timeout until which we try to read the runner attribute file (in seconds).
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` before
    the `run` command.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -386,15 +387,16 @@ "\n", "\t\n", "\t\n", - "\t\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "\t\n", "\n", "" ], "text/plain": [ - "" + "" ] }, "execution_count": 8, @@ -420,10 +422,10 @@ "id": "8971ea07", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.168964Z", - "iopub.status.busy": "2024-07-25T06:16:57.168888Z", - "iopub.status.idle": "2024-07-25T06:16:57.171468Z", - "shell.execute_reply": "2024-07-25T06:16:57.171219Z" + "iopub.execute_input": "2025-08-30T21:15:35.249416Z", + "iopub.status.busy": "2025-08-30T21:15:35.249349Z", + "iopub.status.idle": "2025-08-30T21:15:35.251464Z", + "shell.execute_reply": "2025-08-30T21:15:35.251243Z" } }, "outputs": [ @@ -431,9 +433,9 @@ "data": { "text/html": [ "\n", - "

method NBRunner.nbrun (self, **kwargs)[source]

Blocking execution of the run. This method will wait until
the run has completed execution.

Note that in contrast to `run`, this method returns a
`metaflow.Run` object directly and calls `cleanup()` internally
to support a common notebook pattern of executing a flow and
retrieving its results immediately.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `run` command, in particular, any parameters accepted by the flow.

Returns
-------
Run
    A `metaflow.Run` object representing the finished run.

\n", + "

method NBRunner.nbrun (self, **kwargs)[source]

Blocking execution of the run. This method will wait until
the run has completed execution.

Note that in contrast to `run`, this method returns a
`metaflow.Run` object directly and calls `cleanup()` internally
to support a common notebook pattern of executing a flow and
retrieving its results immediately.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `run` command, in particular, any parameters accepted by the flow.

Returns
-------
Run
    A `metaflow.Run` object representing the finished run.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -447,7 +449,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 9, @@ -465,10 +467,10 @@ "id": "95a8c5b3", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.173679Z", - "iopub.status.busy": "2024-07-25T06:16:57.173586Z", - "iopub.status.idle": "2024-07-25T06:16:57.176168Z", - "shell.execute_reply": "2024-07-25T06:16:57.175862Z" + "iopub.execute_input": "2025-08-30T21:15:35.253539Z", + "iopub.status.busy": "2025-08-30T21:15:35.253467Z", + "iopub.status.idle": "2025-08-30T21:15:35.255678Z", + "shell.execute_reply": "2025-08-30T21:15:35.255491Z" } }, "outputs": [ @@ -476,9 +478,9 @@ "data": { "text/html": [ "\n", - "

method NBRunner.nbresume (self, **kwargs)[source]

Blocking resuming of a run. This method will wait until
the resumed run has completed execution.

Note that in contrast to `resume`, this method returns a
`metaflow.Run` object directly and calls `cleanup()` internally
to support a common notebook pattern of executing a flow and
retrieving its results immediately.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `resume` command.

Returns
-------
Run
    A `metaflow.Run` object representing the resumed run.

\n", + "

method NBRunner.nbresume (self, **kwargs)[source]

Blocking resuming of a run. This method will wait until
the resumed run has completed execution.

Note that in contrast to `resume`, this method returns a
`metaflow.Run` object directly and calls `cleanup()` internally
to support a common notebook pattern of executing a flow and
retrieving its results immediately.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `resume` command.

Returns
-------
Run
    A `metaflow.Run` object representing the resumed run.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -492,7 +494,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 10, @@ -518,10 +520,10 @@ "id": "e9360c97", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.178155Z", - "iopub.status.busy": "2024-07-25T06:16:57.178052Z", - "iopub.status.idle": "2024-07-25T06:16:57.180530Z", - "shell.execute_reply": "2024-07-25T06:16:57.180242Z" + "iopub.execute_input": "2025-08-30T21:15:35.257784Z", + "iopub.status.busy": "2025-08-30T21:15:35.257705Z", + "iopub.status.idle": "2025-08-30T21:15:35.259740Z", + "shell.execute_reply": "2025-08-30T21:15:35.259557Z" } }, "outputs": [ @@ -529,9 +531,9 @@ "data": { "text/html": [ "\n", - "

method NBRunner.async_run (self, **kwargs)[source]

Non-blocking execution of the run. This method will return as soon as the
run has launched. This method is equivalent to `Runner.async_run`.

Note that this method is asynchronous and needs to be `await`ed.


Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `run` command, in particular, any parameters accepted by the flow.

Returns
-------
ExecutingRun
    ExecutingRun representing the run that was started.

\n", + "

method NBRunner.async_run (self, **kwargs)[source]

Non-blocking execution of the run. This method will return as soon as the
run has launched. This method is equivalent to `Runner.async_run`.

Note that this method is asynchronous and needs to be `await`ed.


Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `run` command, in particular, any parameters accepted by the flow.

Returns
-------
ExecutingRun
    ExecutingRun representing the run that was started.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -545,7 +547,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 11, @@ -563,10 +565,10 @@ "id": "dd48a525", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.182821Z", - "iopub.status.busy": "2024-07-25T06:16:57.182745Z", - "iopub.status.idle": "2024-07-25T06:16:57.185040Z", - "shell.execute_reply": "2024-07-25T06:16:57.184827Z" + "iopub.execute_input": "2025-08-30T21:15:35.262077Z", + "iopub.status.busy": "2025-08-30T21:15:35.261984Z", + "iopub.status.idle": "2025-08-30T21:15:35.264154Z", + "shell.execute_reply": "2025-08-30T21:15:35.263966Z" } }, "outputs": [ @@ -574,9 +576,9 @@ "data": { "text/html": [ "\n", - "

method NBRunner.async_resume (self, **kwargs)[source]

Non-blocking execution of the run. This method will return as soon as the
run has launched. This method is equivalent to `Runner.async_resume`.

Note that this method is asynchronous and needs to be `await`ed.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `run` command, in particular, any parameters accepted by the flow.

Returns
-------
ExecutingRun
    ExecutingRun representing the run that was started.

\n", + "

method NBRunner.async_resume (self, **kwargs)[source]

Non-blocking execution of the run. This method will return as soon as the
run has launched. This method is equivalent to `Runner.async_resume`.

Note that this method is asynchronous and needs to be `await`ed.

Parameters
----------
**kwargs : Any
    Additional arguments that you would pass to `python myflow.py` after
    the `run` command, in particular, any parameters accepted by the flow.

Returns
-------
ExecutingRun
    ExecutingRun representing the run that was started.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -590,7 +592,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 12, @@ -608,10 +610,10 @@ "id": "4dcbcf6a", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.187052Z", - "iopub.status.busy": "2024-07-25T06:16:57.186966Z", - "iopub.status.idle": "2024-07-25T06:16:57.189166Z", - "shell.execute_reply": "2024-07-25T06:16:57.188955Z" + "iopub.execute_input": "2025-08-30T21:15:35.266132Z", + "iopub.status.busy": "2025-08-30T21:15:35.266060Z", + "iopub.status.idle": "2025-08-30T21:15:35.267982Z", + "shell.execute_reply": "2025-08-30T21:15:35.267789Z" } }, "outputs": [ @@ -619,9 +621,9 @@ "data": { "text/html": [ "\n", - "

method NBRunner.cleanup (self)[source]

Delete any temporary files created during execution.

Call this method after using `async_run` or `async_resume`. You don't
have to call this after `nbrun` or `nbresume`.

\n", + "

method NBRunner.cleanup (self)[source]

Delete any temporary files created during execution.

Call this method after using `async_run` or `async_resume`. You don't
have to call this after `nbrun` or `nbresume`.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -630,7 +632,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 13, @@ -656,10 +658,10 @@ "id": "ca407a51", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.191237Z", - "iopub.status.busy": "2024-07-25T06:16:57.191153Z", - "iopub.status.idle": "2024-07-25T06:16:57.195115Z", - "shell.execute_reply": "2024-07-25T06:16:57.194853Z" + "iopub.execute_input": "2025-08-30T21:15:35.270116Z", + "iopub.status.busy": "2025-08-30T21:15:35.270041Z", + "iopub.status.idle": "2025-08-30T21:15:35.273706Z", + "shell.execute_reply": "2025-08-30T21:15:35.273505Z" } }, "outputs": [ @@ -667,9 +669,9 @@ "data": { "text/html": [ "\n", - "

class ExecutingRun [source]

This class contains a reference to a `metaflow.Run` object representing
the currently executing or finished run, as well as metadata related
to the process.

`ExecutingRun` is returned by methods in `Runner` and `NBRunner`. It is not
meant to be instantiated directly.

This class works as a context manager, allowing you to use a pattern like
```python
with Runner(...).run() as running:
    ...
```
Note that you should use either this object as the context manager or
`Runner`, not both in a nested manner.

\n", + "

class ExecutingRun [source]

This class contains a reference to a `metaflow.Run` object representing
the currently executing or finished run, as well as metadata related
to the process.

`ExecutingRun` is returned by methods in `Runner` and `NBRunner`. It is not
meant to be instantiated directly.

This class works as a context manager, allowing you to use a pattern like
```python
with Runner(...).run() as running:
    ...
```
Note that you should use either this object as the context manager or
`Runner`, not both in a nested manner.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -678,7 +680,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 14, @@ -696,10 +698,10 @@ "id": "f127a019", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.197432Z", - "iopub.status.busy": "2024-07-25T06:16:57.197357Z", - "iopub.status.idle": "2024-07-25T06:16:57.199514Z", - "shell.execute_reply": "2024-07-25T06:16:57.199252Z" + "iopub.execute_input": "2025-08-30T21:15:35.275972Z", + "iopub.status.busy": "2025-08-30T21:15:35.275896Z", + "iopub.status.idle": "2025-08-30T21:15:35.277790Z", + "shell.execute_reply": "2025-08-30T21:15:35.277585Z" } }, "outputs": [ @@ -718,7 +720,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 15, @@ -736,10 +738,10 @@ "id": "777973d3", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.201633Z", - "iopub.status.busy": "2024-07-25T06:16:57.201538Z", - "iopub.status.idle": "2024-07-25T06:16:57.203616Z", - "shell.execute_reply": "2024-07-25T06:16:57.203359Z" + "iopub.execute_input": "2025-08-30T21:15:35.280004Z", + "iopub.status.busy": "2025-08-30T21:15:35.279927Z", + "iopub.status.idle": "2025-08-30T21:15:35.281762Z", + "shell.execute_reply": "2025-08-30T21:15:35.281551Z" } }, "outputs": [ @@ -747,18 +749,18 @@ "data": { "text/html": [ "\n", - "

property ExecutingRun.status [source]

Returns the status of the underlying subprocess that is responsible
for executing the run.

The return value is one of the following strings:
- `running` indicates a currently executing run.
- `failed` indicates a failed run.
- `successful` a successful run.

Returns
-------
str
    The current status of the run.

\n", + "

property ExecutingRun.status [source]

Returns the status of the underlying subprocess that is responsible
for executing the run.

The return value is one of the following strings:
- `timeout` indicates that the run timed out.
- `running` indicates a currently executing run.
- `failed` indicates a failed run.
- `successful` indicates a successful run.

Returns
-------
str
    The current status of the run.

\n", "
\n", "\n", "\n", - "\n", + "\n", "\n", "\n", "\n", "" ], "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -776,10 +778,10 @@ "id": "ca5b461d", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.205776Z", - "iopub.status.busy": "2024-07-25T06:16:57.205682Z", - "iopub.status.idle": "2024-07-25T06:16:57.207721Z", - "shell.execute_reply": "2024-07-25T06:16:57.207475Z" + "iopub.execute_input": "2025-08-30T21:15:35.284097Z", + "iopub.status.busy": "2025-08-30T21:15:35.284013Z", + "iopub.status.idle": "2025-08-30T21:15:35.285910Z", + "shell.execute_reply": "2025-08-30T21:15:35.285723Z" } }, "outputs": [ @@ -798,7 +800,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 17, @@ -816,10 +818,10 @@ "id": "c6b98164", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.209801Z", - "iopub.status.busy": "2024-07-25T06:16:57.209713Z", - "iopub.status.idle": "2024-07-25T06:16:57.211588Z", - "shell.execute_reply": "2024-07-25T06:16:57.211359Z" + "iopub.execute_input": "2025-08-30T21:15:35.288269Z", + "iopub.status.busy": "2025-08-30T21:15:35.288187Z", + "iopub.status.idle": "2025-08-30T21:15:35.290143Z", + "shell.execute_reply": "2025-08-30T21:15:35.289934Z" } }, "outputs": [ @@ -838,7 +840,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 18, @@ -864,10 +866,10 @@ "id": "f716f347", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.214150Z", - "iopub.status.busy": "2024-07-25T06:16:57.214062Z", - "iopub.status.idle": "2024-07-25T06:16:57.216506Z", - "shell.execute_reply": "2024-07-25T06:16:57.216287Z" + "iopub.execute_input": "2025-08-30T21:15:35.292838Z", + "iopub.status.busy": "2025-08-30T21:15:35.292751Z", + "iopub.status.idle": "2025-08-30T21:15:35.295038Z", + "shell.execute_reply": "2025-08-30T21:15:35.294829Z" }, "scrolled": true }, @@ -876,16 +878,16 @@ "data": { "text/html": [ "\n", - "

method ExecutingRun.wait (self, timeout: Optional[float] = None, stream: Optional[str] = None) -> 'ExecutingRun'[source]

Wait for this run to finish, optionally with a timeout
and optionally streaming its output.

Note that this method is asynchronous and needs to be `await`ed.

Parameters
----------
timeout : Optional[float], default None
    The maximum time to wait for the run to finish.
    If the timeout is reached, the run is terminated
stream : Optional[str], default None
    If specified, the specified stream is printed to stdout. `stream` can
    be one of `stdout` or `stderr`.

Returns
-------
ExecutingRun
    This object, allowing you to chain calls.

\n", + "

method ExecutingRun.wait (self, timeout: Optional[float] = None, stream: Optional[str] = None) -> 'ExecutingRun'[source]

Wait for this run to finish, optionally with a timeout
and optionally streaming its output.

Note that this method is asynchronous and needs to be `await`ed.

Parameters
----------
timeout : float, optional, default None
    The maximum time, in seconds, to wait for the run to finish.
    If the timeout is reached, the run is terminated. If not specified, wait
    forever.
stream : str, optional, default None
    If specified, the specified stream is printed to stdout. `stream` can
    be one of `stdout` or `stderr`.

Returns
-------
ExecutingRun
    This object, allowing you to chain calls.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", "\n", "\n", - "\t\n", - "\t\n", + "\t\n", + "\t\n", "\n", "\n", "\t\n", @@ -893,7 +895,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 19, @@ -911,10 +913,10 @@ "id": "4b97379d", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:57.218736Z", - "iopub.status.busy": "2024-07-25T06:16:57.218656Z", - "iopub.status.idle": "2024-07-25T06:16:57.220972Z", - "shell.execute_reply": "2024-07-25T06:16:57.220747Z" + "iopub.execute_input": "2025-08-30T21:15:35.297864Z", + "iopub.status.busy": "2025-08-30T21:15:35.297758Z", + "iopub.status.idle": "2025-08-30T21:15:35.300154Z", + "shell.execute_reply": "2025-08-30T21:15:35.299910Z" } }, "outputs": [ @@ -922,16 +924,16 @@ "data": { "text/html": [ "\n", - "

method ExecutingRun.stream_log (self, stream: str, position: Optional[int] = None) -> Iterator[Tuple[int, str]][source]

Asynchronous iterator to stream logs from the subprocess line by line.

Note that this method is asynchronous and needs to be `await`ed.

Parameters
----------
stream : str
    The stream to stream logs from. Can be one of `stdout` or `stderr`.
position : Optional[int], default None
    The position in the log file to start streaming from. If None, it starts
    from the beginning of the log file. This allows resuming streaming from
    a previously known position

Yields
------
Tuple[int, str]
    A tuple containing the position in the log file and the line read. The
    position returned can be used to feed into another `stream_logs` call
    for example.

\n", + "

method ExecutingRun.stream_log (self, stream: str, position: Optional[int] = None) -> Iterator[Tuple[int, str]][source]

Asynchronous iterator to stream logs from the subprocess line by line.

Note that this method is asynchronous and needs to be `await`ed.

Parameters
----------
stream : str
    The stream to stream logs from. Can be one of `stdout` or `stderr`.
position : int, optional, default None
    The position in the log file to start streaming from. If None, it starts
    from the beginning of the log file. This allows resuming streaming from
    a previously known position

Yields
------
Tuple[int, str]
    A tuple containing the position in the log file and the line read. The
    position returned can be used to feed into another `stream_logs` call
    for example.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", "\n", "\n", "\t\n", - "\t\n", + "\t\n", "\n", "\n", "\t\n", @@ -939,7 +941,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 20, diff --git a/docs/api/runner.md b/docs/api/runner.md index 4b148f48..b53ad1d4 100644 --- a/docs/api/runner.md +++ b/docs/api/runner.md @@ -24,24 +24,25 @@ with await Runner(...).async_run() as running: If you don't use `Runner` as a context manager, remember to call `Runner.cleanup()` to remove any leftover temp files. - + - + - - - + + + + - + @@ -55,7 +56,7 @@ If you don't use `Runner` as a context manager, remember to call `Runner.cleanup These calls block until the command completes. - + @@ -70,7 +71,7 @@ These calls block until the command completes. - + @@ -87,7 +88,7 @@ These calls block until the command completes. ### Non-Blocking API - + @@ -102,7 +103,7 @@ These calls block until the command completes. - + @@ -121,7 +122,7 @@ These calls block until the command completes. `NBRunner` is a wrapper over `Runner` which allows you to refer to a flow defined in a notebook cell instead of a file. For examples, see [Running flows in a notebook](/metaflow/managing-flows/notebook-runs). - + @@ -129,9 +130,10 @@ These calls block until the command completes. - - - + + + + @@ -140,7 +142,7 @@ These calls block until the command completes. ### Blocking API - + @@ -155,7 +157,7 @@ These calls block until the command completes. - + @@ -172,7 +174,7 @@ These calls block until the command completes. ### Non-Blocking API - + @@ -187,7 +189,7 @@ These calls block until the command completes. - + @@ -202,7 +204,7 @@ These calls block until the command completes. - + @@ -214,7 +216,7 @@ These calls block until the command completes. ## ExecutingRun - + @@ -236,7 +238,7 @@ These calls block until the command completes. - + @@ -266,14 +268,14 @@ These calls block until the command completes. ### Non-Blocking API - + - - + + @@ -282,16 +284,17 @@ These calls block until the command completes. - + - + + diff --git a/docs/api/step-decorators/batch.ipynb b/docs/api/step-decorators/batch.ipynb index 050f84df..6bcccc0a 100644 --- a/docs/api/step-decorators/batch.ipynb +++ b/docs/api/step-decorators/batch.ipynb @@ -24,10 +24,10 @@ "id": "a5ef9454", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.400491Z", - "iopub.status.busy": "2024-07-25T06:16:59.400293Z", - "iopub.status.idle": "2024-07-25T06:16:59.685244Z", - "shell.execute_reply": "2024-07-25T06:16:59.684870Z" + "iopub.execute_input": "2025-08-30T21:15:37.986569Z", + "iopub.status.busy": "2025-08-30T21:15:37.986325Z", + "iopub.status.idle": "2025-08-30T21:15:38.223739Z", + "shell.execute_reply": "2025-08-30T21:15:38.223456Z" } }, "outputs": [], @@ -46,10 +46,10 @@ "id": "09970e68", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.687754Z", - "iopub.status.busy": "2024-07-25T06:16:59.687597Z", - "iopub.status.idle": "2024-07-25T06:16:59.696794Z", - "shell.execute_reply": "2024-07-25T06:16:59.696531Z" + "iopub.execute_input": "2025-08-30T21:15:38.225915Z", + "iopub.status.busy": "2025-08-30T21:15:38.225753Z", + "iopub.status.idle": "2025-08-30T21:15:38.234985Z", + "shell.execute_reply": "2025-08-30T21:15:38.234740Z" } }, "outputs": [ @@ -57,9 +57,9 @@ "data": { "text/html": [ "\n", - "

decorator @batch (...)[source]

metaflow

Specifies that this step should execute on [AWS Batch](https://aws.amazon.com/batch/).

Parameters
----------
cpu : int, default 1
    Number of CPUs required for this step. If `@resources` is
    also present, the maximum value from all decorators is used.
gpu : int, default 0
    Number of GPUs required for this step. If `@resources` is
    also present, the maximum value from all decorators is used.
memory : int, default 4096
    Memory size (in MB) required for this step. If
    `@resources` is also present, the maximum value from all decorators is
    used.
image : str, optional, default None
    Docker image to use when launching on AWS Batch. If not specified, and
    METAFLOW_BATCH_CONTAINER_IMAGE is specified, that image is used. If
    not, a default Docker image mapping to the current version of Python is used.
queue : str, default METAFLOW_BATCH_JOB_QUEUE
    AWS Batch Job Queue to submit the job to.
iam_role : str, default METAFLOW_ECS_S3_ACCESS_IAM_ROLE
    AWS IAM role that AWS Batch container uses to access AWS cloud resources.
execution_role : str, default METAFLOW_ECS_FARGATE_EXECUTION_ROLE
    AWS IAM role that AWS Batch can use [to trigger AWS Fargate tasks]
    (https://docs.aws.amazon.com/batch/latest/userguide/execution-IAM-role.html).
shared_memory : int, optional, default None
    The value for the size (in MiB) of the /dev/shm volume for this step.
    This parameter maps to the `--shm-size` option in Docker.
max_swap : int, optional, default None
    The total amount of swap memory (in MiB) a container can use for this
    step. This parameter is translated to the `--memory-swap` option in
    Docker where the value is the sum of the container memory plus the
    `max_swap` value.
swappiness : int, optional, default None
    This allows you to tune memory swappiness behavior for this step.
    A swappiness value of 0 causes swapping not to happen unless absolutely
    necessary. A swappiness value of 100 causes pages to be swapped very
    aggressively. Accepted values are whole numbers between 0 and 100.
use_tmpfs : bool, default False
    This enables an explicit tmpfs mount for this step. Note that tmpfs is
    not available on Fargate compute environments
tmpfs_tempdir : bool, default True
    sets METAFLOW_TEMPDIR to tmpfs_path if set for this step.
tmpfs_size : int, optional, default None
    The value for the size (in MiB) of the tmpfs mount for this step.
    This parameter maps to the `--tmpfs` option in Docker. Defaults to 50% of the
    memory allocated for this step.
tmpfs_path : str, optional, default None
    Path to tmpfs mount for this step. Defaults to /metaflow_temp.
inferentia : int, default 0
    Number of Inferentia chips required for this step.
trainium : int, default None
    Alias for inferentia. Use only one of the two.
efa : int, default 0
    Number of elastic fabric adapter network devices to attach to container
ephemeral_storage : int, default None
    The total amount, in GiB, of ephemeral storage to set for the task, 21-200GiB.
    This is only relevant for Fargate compute environments
log_driver: str, optional, default None
    The log driver to use for the Amazon ECS container.
log_options: List[str], optional, default None
    List of strings containing options for the chosen log driver. The configurable values
    depend on the `log driver` chosen. Validation of these options is not supported yet.
    Example: [`awslogs-group:aws/batch/job`]

\n", + "

decorator @batch (...)[source]

metaflow

Specifies that this step should execute on [AWS Batch](https://aws.amazon.com/batch/).

Parameters
----------
cpu : int, default 1
    Number of CPUs required for this step. If `@resources` is
    also present, the maximum value from all decorators is used.
gpu : int, default 0
    Number of GPUs required for this step. If `@resources` is
    also present, the maximum value from all decorators is used.
memory : int, default 4096
    Memory size (in MB) required for this step. If
    `@resources` is also present, the maximum value from all decorators is
    used.
image : str, optional, default None
    Docker image to use when launching on AWS Batch. If not specified, and
    METAFLOW_BATCH_CONTAINER_IMAGE is specified, that image is used. If
    not, a default Docker image mapping to the current version of Python is used.
queue : str, default METAFLOW_BATCH_JOB_QUEUE
    AWS Batch Job Queue to submit the job to.
iam_role : str, default METAFLOW_ECS_S3_ACCESS_IAM_ROLE
    AWS IAM role that AWS Batch container uses to access AWS cloud resources.
execution_role : str, default METAFLOW_ECS_FARGATE_EXECUTION_ROLE
    AWS IAM role that AWS Batch can use [to trigger AWS Fargate tasks]
    (https://docs.aws.amazon.com/batch/latest/userguide/execution-IAM-role.html).
shared_memory : int, optional, default None
    The value for the size (in MiB) of the /dev/shm volume for this step.
    This parameter maps to the `--shm-size` option in Docker.
max_swap : int, optional, default None
    The total amount of swap memory (in MiB) a container can use for this
    step. This parameter is translated to the `--memory-swap` option in
    Docker where the value is the sum of the container memory plus the
    `max_swap` value.
swappiness : int, optional, default None
    This allows you to tune memory swappiness behavior for this step.
    A swappiness value of 0 causes swapping not to happen unless absolutely
    necessary. A swappiness value of 100 causes pages to be swapped very
    aggressively. Accepted values are whole numbers between 0 and 100.
use_tmpfs : bool, default False
    This enables an explicit tmpfs mount for this step. Note that tmpfs is
    not available on Fargate compute environments
tmpfs_tempdir : bool, default True
    sets METAFLOW_TEMPDIR to tmpfs_path if set for this step.
tmpfs_size : int, optional, default None
    The value for the size (in MiB) of the tmpfs mount for this step.
    This parameter maps to the `--tmpfs` option in Docker. Defaults to 50% of the
    memory allocated for this step.
tmpfs_path : str, optional, default None
    Path to tmpfs mount for this step. Defaults to /metaflow_temp.
inferentia : int, default 0
    Number of Inferentia chips required for this step.
trainium : int, default None
    Alias for inferentia. Use only one of the two.
efa : int, default 0
    Number of elastic fabric adapter network devices to attach to container
ephemeral_storage : int, default None
    The total amount, in GiB, of ephemeral storage to set for the task, 21-200GiB.
    This is only relevant for Fargate compute environments
log_driver: str, optional, default None
    The log driver to use for the Amazon ECS container.
log_options: List[str], optional, default None
    List of strings containing options for the chosen log driver. The configurable values
    depend on the `log driver` chosen. Validation of these options is not supported yet.
    Example: [`awslogs-group:aws/batch/job`]

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -89,7 +89,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/step-decorators/batch.md b/docs/api/step-decorators/batch.md index 2a2c6412..578a31a7 100644 --- a/docs/api/step-decorators/batch.md +++ b/docs/api/step-decorators/batch.md @@ -7,7 +7,7 @@ The `@batch` decorator sends a step for execution on the [AWS Batch](https://aws Note that while `@batch` doesn't allow mounting arbitrary disk volumes on the fly, you can create in-memory filesystems easily with `tmpfs` options. For more details, see [using `metaflow.S3` for in-memory processing](/scaling/data#using-metaflows3-for-in-memory-processing). - + diff --git a/docs/api/step-decorators/card.ipynb b/docs/api/step-decorators/card.ipynb index 1b4dfe16..8ab207e2 100644 --- a/docs/api/step-decorators/card.ipynb +++ b/docs/api/step-decorators/card.ipynb @@ -16,10 +16,10 @@ "id": "20310c8b", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:02.423148Z", - "iopub.status.busy": "2024-07-25T06:17:02.422995Z", - "iopub.status.idle": "2024-07-25T06:17:02.722995Z", - "shell.execute_reply": "2024-07-25T06:17:02.722698Z" + "iopub.execute_input": "2025-08-30T21:15:39.898583Z", + "iopub.status.busy": "2025-08-30T21:15:39.898479Z", + "iopub.status.idle": "2025-08-30T21:15:40.106685Z", + "shell.execute_reply": "2025-08-30T21:15:40.106363Z" } }, "outputs": [], @@ -38,10 +38,10 @@ "id": "7f2bc67e", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:02.725533Z", - "iopub.status.busy": "2024-07-25T06:17:02.725351Z", - "iopub.status.idle": "2024-07-25T06:17:02.733139Z", - "shell.execute_reply": "2024-07-25T06:17:02.732917Z" + "iopub.execute_input": "2025-08-30T21:15:40.108681Z", + "iopub.status.busy": "2025-08-30T21:15:40.108552Z", + "iopub.status.idle": "2025-08-30T21:15:40.117210Z", + "shell.execute_reply": "2025-08-30T21:15:40.116977Z" } }, "outputs": [ @@ -53,9 +53,9 @@ "@@ Returns \n", "------- in \n", "Creates a human-readable report, a Metaflow Card, after this step completes.\n", - "... in the docstring of CardDecorator in /Users/ville/src/madhur-metaflow/metaflow/plugins/cards/card_decorator.py.\n", + "... in the docstring of CardDecorator in /Users/ville/src/metaflow/metaflow/plugins/cards/card_decorator.py.\n", " warn(msg)\n", - "/Users/ville/mambaforge/envs/docs/lib/python3.11/site-packages/numpydoc/docscrape.py:434: UserWarning: Unknown section Mf Add To Current in the docstring of CardDecorator in /Users/ville/src/madhur-metaflow/metaflow/plugins/cards/card_decorator.py.\n", + "/Users/ville/mambaforge/envs/docs/lib/python3.11/site-packages/numpydoc/docscrape.py:434: UserWarning: Unknown section Mf Add To Current in the docstring of CardDecorator in /Users/ville/src/metaflow/metaflow/plugins/cards/card_decorator.py.\n", " warn(msg)\n" ] }, @@ -63,9 +63,9 @@ "data": { "text/html": [ "\n", - "

decorator @card (...)[source]

metaflow

Creates a human-readable report, a Metaflow Card, after this step completes.

Note that you may add multiple `@card` decorators in a step with different parameters.

Parameters
----------
type : str, default 'default'
    Card type.
id : str, optional, default None
    If multiple cards are present, use this id to identify this card.
options : Dict[str, Any], default {}
    Options passed to the card. The contents depend on the card type.
timeout : int, default 45
    Interrupt reporting if it takes more than this many seconds.

MF Add To Current
-----------------
card -> metaflow.plugins.cards.component_serializer.CardComponentCollector
    The `@card` decorator makes the cards available through the `current.card`
    object. If multiple `@card` decorators are present, you can add an `ID` to
    distinguish between them using `@card(id=ID)` as the decorator. You will then
    be able to access that specific card using `current.card[ID].

    Methods available are `append` and `extend`

    @@ Returns
    -------
    CardComponentCollector
        The or one of the cards attached to this step.

\n", + "

decorator @card (...)[source]

metaflow

Creates a human-readable report, a Metaflow Card, after this step completes.

Note that you may add multiple `@card` decorators in a step with different parameters.

Parameters
----------
type : str, default 'default'
    Card type.
id : str, optional, default None
    If multiple cards are present, use this id to identify this card.
options : Dict[str, Any], default {}
    Options passed to the card. The contents depend on the card type.
timeout : int, default 45
    Interrupt reporting if it takes more than this many seconds.

MF Add To Current
-----------------
card -> metaflow.plugins.cards.component_serializer.CardComponentCollector
    The `@card` decorator makes the cards available through the `current.card`
    object. If multiple `@card` decorators are present, you can add an `ID` to
    distinguish between them using `@card(id=ID)` as the decorator. You will then
    be able to access that specific card using `current.card[ID].

    Methods available are `append` and `extend`

    @@ Returns
    -------
    CardComponentCollector
        The or one of the cards attached to this step.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -79,7 +79,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/step-decorators/card.md b/docs/api/step-decorators/card.md index 235793a9..cedd1227 100644 --- a/docs/api/step-decorators/card.md +++ b/docs/api/step-decorators/card.md @@ -5,7 +5,7 @@ Creates a report card after the step completes. For more information, see [Visua - + diff --git a/docs/api/step-decorators/catch.ipynb b/docs/api/step-decorators/catch.ipynb index 5e4039ba..60ad5586 100644 --- a/docs/api/step-decorators/catch.ipynb +++ b/docs/api/step-decorators/catch.ipynb @@ -18,10 +18,10 @@ "id": "627487a4", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:01.010753Z", - "iopub.status.busy": "2024-07-25T06:17:01.010654Z", - "iopub.status.idle": "2024-07-25T06:17:01.277105Z", - "shell.execute_reply": "2024-07-25T06:17:01.276760Z" + "iopub.execute_input": "2025-08-30T21:15:38.692739Z", + "iopub.status.busy": "2025-08-30T21:15:38.692660Z", + "iopub.status.idle": "2025-08-30T21:15:38.913789Z", + "shell.execute_reply": "2025-08-30T21:15:38.913472Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "af50a6d2", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:01.279312Z", - "iopub.status.busy": "2024-07-25T06:17:01.279168Z", - "iopub.status.idle": "2024-07-25T06:17:01.284680Z", - "shell.execute_reply": "2024-07-25T06:17:01.284461Z" + "iopub.execute_input": "2025-08-30T21:15:38.915990Z", + "iopub.status.busy": "2025-08-30T21:15:38.915771Z", + "iopub.status.idle": "2025-08-30T21:15:38.921468Z", + "shell.execute_reply": "2025-08-30T21:15:38.921266Z" } }, "outputs": [ @@ -65,7 +65,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/step-decorators/conda.ipynb b/docs/api/step-decorators/conda.ipynb index 36037f48..072f884c 100644 --- a/docs/api/step-decorators/conda.ipynb +++ b/docs/api/step-decorators/conda.ipynb @@ -18,10 +18,10 @@ "id": "8d5bb116", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:00.001856Z", - "iopub.status.busy": "2024-07-25T06:17:00.001763Z", - "iopub.status.idle": "2024-07-25T06:17:00.270101Z", - "shell.execute_reply": "2024-07-25T06:17:00.269792Z" + "iopub.execute_input": "2025-08-30T21:15:36.476365Z", + "iopub.status.busy": "2025-08-30T21:15:36.476294Z", + "iopub.status.idle": "2025-08-30T21:15:36.696018Z", + "shell.execute_reply": "2025-08-30T21:15:36.695744Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "29af6ee3", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:00.272427Z", - "iopub.status.busy": "2024-07-25T06:17:00.272277Z", - "iopub.status.idle": "2024-07-25T06:17:00.279931Z", - "shell.execute_reply": "2024-07-25T06:17:00.279670Z" + "iopub.execute_input": "2025-08-30T21:15:36.698107Z", + "iopub.status.busy": "2025-08-30T21:15:36.697973Z", + "iopub.status.idle": "2025-08-30T21:15:36.705867Z", + "shell.execute_reply": "2025-08-30T21:15:36.705622Z" } }, "outputs": [ @@ -51,9 +51,9 @@ "data": { "text/html": [ "\n", - "

decorator @conda (...)[source]

metaflow

Specifies the Conda environment for the step.

Information in this decorator will augment any
attributes set in the `@conda_base` flow-level decorator. Hence,
you can use `@conda_base` to set packages required by all
steps and use `@conda` to specify step-specific overrides.

Parameters
----------
packages : Dict[str, str], default {}
    Packages to use for this step. The key is the name of the package
    and the value is the version to use.
libraries : Dict[str, str], default {}
    Supported for backward compatibility. When used with packages, packages will take precedence.
python : str, optional, default None
    Version of Python to use, e.g. '3.7.4'. A default value of None implies
    that the version used will correspond to the version of the Python interpreter used to start the run.
disabled : bool, default False
    If set to True, disables @conda.

\n", + "

decorator @conda (...)[source]

metaflow

Specifies the Conda environment for the step.

Information in this decorator will augment any
attributes set in the `@conda_base` flow-level decorator. Hence,
you can use `@conda_base` to set packages required by all
steps and use `@conda` to specify step-specific overrides.

Parameters
----------
packages : Dict[str, str], default {}
    Packages to use for this step. The key is the name of the package
    and the value is the version to use.
libraries : Dict[str, str], default {}
    Supported for backward compatibility. When used with packages, packages will take precedence.
python : str, optional, default None
    Version of Python to use, e.g. '3.7.4'. A default value of None implies
    that the version used will correspond to the version of the Python interpreter used to start the run.
disabled : bool, default False
    If set to True, disables @conda.

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -67,7 +67,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/step-decorators/conda.md b/docs/api/step-decorators/conda.md index f6804060..a98ae76b 100644 --- a/docs/api/step-decorators/conda.md +++ b/docs/api/step-decorators/conda.md @@ -7,7 +7,7 @@ The libraries are installed from [Conda repositories](https://anaconda.org/). Fo - + diff --git a/docs/api/step-decorators/environment.ipynb b/docs/api/step-decorators/environment.ipynb index c0aa77aa..1b59d1a6 100644 --- a/docs/api/step-decorators/environment.ipynb +++ b/docs/api/step-decorators/environment.ipynb @@ -24,10 +24,10 @@ "id": "627487a4", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:03.511324Z", - "iopub.status.busy": "2024-07-25T06:17:03.510816Z", - "iopub.status.idle": "2024-07-25T06:17:03.798763Z", - "shell.execute_reply": "2024-07-25T06:17:03.798427Z" + "iopub.execute_input": "2025-08-30T21:15:41.403605Z", + "iopub.status.busy": "2025-08-30T21:15:41.403531Z", + "iopub.status.idle": "2025-08-30T21:15:41.609980Z", + "shell.execute_reply": "2025-08-30T21:15:41.609645Z" } }, "outputs": [], @@ -46,10 +46,10 @@ "id": "af50a6d2", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:03.800957Z", - "iopub.status.busy": "2024-07-25T06:17:03.800802Z", - "iopub.status.idle": "2024-07-25T06:17:03.805689Z", - "shell.execute_reply": "2024-07-25T06:17:03.805444Z" + "iopub.execute_input": "2025-08-30T21:15:41.612041Z", + "iopub.status.busy": "2025-08-30T21:15:41.611905Z", + "iopub.status.idle": "2025-08-30T21:15:41.616866Z", + "shell.execute_reply": "2025-08-30T21:15:41.616657Z" } }, "outputs": [ @@ -70,7 +70,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/step-decorators/kubernetes.ipynb b/docs/api/step-decorators/kubernetes.ipynb index 2ec23e28..7b757402 100644 --- a/docs/api/step-decorators/kubernetes.ipynb +++ b/docs/api/step-decorators/kubernetes.ipynb @@ -18,10 +18,10 @@ "id": "e5133463", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:04.019492Z", - "iopub.status.busy": "2024-07-25T06:17:04.019392Z", - "iopub.status.idle": "2024-07-25T06:17:04.308718Z", - "shell.execute_reply": "2024-07-25T06:17:04.308378Z" + "iopub.execute_input": "2025-08-30T21:15:41.654468Z", + "iopub.status.busy": "2025-08-30T21:15:41.654376Z", + "iopub.status.idle": "2025-08-30T21:15:41.879230Z", + "shell.execute_reply": "2025-08-30T21:15:41.878884Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "d7399f58", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:04.311427Z", - "iopub.status.busy": "2024-07-25T06:17:04.311186Z", - "iopub.status.idle": "2024-07-25T06:17:04.322020Z", - "shell.execute_reply": "2024-07-25T06:17:04.321710Z" + "iopub.execute_input": "2025-08-30T21:15:41.881329Z", + "iopub.status.busy": "2025-08-30T21:15:41.881188Z", + "iopub.status.idle": "2025-08-30T21:15:41.892047Z", + "shell.execute_reply": "2025-08-30T21:15:41.891818Z" } }, "outputs": [ @@ -51,9 +51,9 @@ "data": { "text/html": [ "\n", - "

decorator @kubernetes (...)[source]

metaflow

Specifies that this step should execute on Kubernetes.

Parameters
----------
cpu : int, default 1
    Number of CPUs required for this step. If `@resources` is
    also present, the maximum value from all decorators is used.
memory : int, default 4096
    Memory size (in MB) required for this step. If
    `@resources` is also present, the maximum value from all decorators is
    used.
disk : int, default 10240
    Disk size (in MB) required for this step. If
    `@resources` is also present, the maximum value from all decorators is
    used.
image : str, optional, default None
    Docker image to use when launching on Kubernetes. If not specified, and
    METAFLOW_KUBERNETES_CONTAINER_IMAGE is specified, that image is used. If
    not, a default Docker image mapping to the current version of Python is used.
image_pull_policy: str, default KUBERNETES_IMAGE_PULL_POLICY
    If given, the imagePullPolicy to be applied to the Docker image of the step.
service_account : str, default METAFLOW_KUBERNETES_SERVICE_ACCOUNT
    Kubernetes service account to use when launching pod in Kubernetes.
secrets : List[str], optional, default None
    Kubernetes secrets to use when launching pod in Kubernetes. These
    secrets are in addition to the ones defined in `METAFLOW_KUBERNETES_SECRETS`
    in Metaflow configuration.
namespace : str, default METAFLOW_KUBERNETES_NAMESPACE
    Kubernetes namespace to use when launching pod in Kubernetes.
gpu : int, optional, default None
    Number of GPUs required for this step. A value of zero implies that
    the scheduled node should not have GPUs.
gpu_vendor : str, default KUBERNETES_GPU_VENDOR
    The vendor of the GPUs to be used for this step.
tolerations : List[str], default []
    The default is extracted from METAFLOW_KUBERNETES_TOLERATIONS.
    Kubernetes tolerations to use when launching pod in Kubernetes.
use_tmpfs : bool, default False
    This enables an explicit tmpfs mount for this step.
tmpfs_tempdir : bool, default True
    sets METAFLOW_TEMPDIR to tmpfs_path if set for this step.
tmpfs_size : int, optional, default: None
    The value for the size (in MiB) of the tmpfs mount for this step.
    This parameter maps to the `--tmpfs` option in Docker. Defaults to 50% of the
    memory allocated for this step.
tmpfs_path : str, optional, default /metaflow_temp
    Path to tmpfs mount for this step.
persistent_volume_claims : Dict[str, str], optional, default None
    A map (dictionary) of persistent volumes to be mounted to the pod for this step. The map is from persistent
    volumes to the path to which the volume is to be mounted, e.g., `{'pvc-name': '/path/to/mount/on'}`.
shared_memory: int, optional
    Shared memory size (in MiB) required for this step
port: int, optional
    Port number to specify in the Kubernetes job object

\n", + "

decorator @kubernetes (...)[source]

metaflow

Specifies that this step should execute on Kubernetes.

Parameters
----------
cpu : int, default 1
    Number of CPUs required for this step. If `@resources` is
    also present, the maximum value from all decorators is used.
memory : int, default 4096
    Memory size (in MB) required for this step. If
    `@resources` is also present, the maximum value from all decorators is
    used.
disk : int, default 10240
    Disk size (in MB) required for this step. If
    `@resources` is also present, the maximum value from all decorators is
    used.
image : str, optional, default None
    Docker image to use when launching on Kubernetes. If not specified, and
    METAFLOW_KUBERNETES_CONTAINER_IMAGE is specified, that image is used. If
    not, a default Docker image mapping to the current version of Python is used.
image_pull_policy: str, default KUBERNETES_IMAGE_PULL_POLICY
    If given, the imagePullPolicy to be applied to the Docker image of the step.
image_pull_secrets: List[str], default []
    The default is extracted from METAFLOW_KUBERNETES_IMAGE_PULL_SECRETS.
    Kubernetes image pull secrets to use when pulling container images
    in Kubernetes.
service_account : str, default METAFLOW_KUBERNETES_SERVICE_ACCOUNT
    Kubernetes service account to use when launching pod in Kubernetes.
secrets : List[str], optional, default None
    Kubernetes secrets to use when launching pod in Kubernetes. These
    secrets are in addition to the ones defined in `METAFLOW_KUBERNETES_SECRETS`
    in Metaflow configuration.
node_selector: Union[Dict[str,str], str], optional, default None
    Kubernetes node selector(s) to apply to the pod running the task.
    Can be passed in as a comma separated string of values e.g.
    'kubernetes.io/os=linux,kubernetes.io/arch=amd64' or as a dictionary
    {'kubernetes.io/os': 'linux', 'kubernetes.io/arch': 'amd64'}
namespace : str, default METAFLOW_KUBERNETES_NAMESPACE
    Kubernetes namespace to use when launching pod in Kubernetes.
gpu : int, optional, default None
    Number of GPUs required for this step. A value of zero implies that
    the scheduled node should not have GPUs.
gpu_vendor : str, default KUBERNETES_GPU_VENDOR
    The vendor of the GPUs to be used for this step.
tolerations : List[Dict[str,str]], default []
    The default is extracted from METAFLOW_KUBERNETES_TOLERATIONS.
    Kubernetes tolerations to use when launching pod in Kubernetes.
labels: Dict[str, str], default: METAFLOW_KUBERNETES_LABELS
    Kubernetes labels to use when launching pod in Kubernetes.
annotations: Dict[str, str], default: METAFLOW_KUBERNETES_ANNOTATIONS
    Kubernetes annotations to use when launching pod in Kubernetes.
use_tmpfs : bool, default False
    This enables an explicit tmpfs mount for this step.
tmpfs_tempdir : bool, default True
    sets METAFLOW_TEMPDIR to tmpfs_path if set for this step.
tmpfs_size : int, optional, default: None
    The value for the size (in MiB) of the tmpfs mount for this step.
    This parameter maps to the `--tmpfs` option in Docker. Defaults to 50% of the
    memory allocated for this step.
tmpfs_path : str, optional, default /metaflow_temp
    Path to tmpfs mount for this step.
persistent_volume_claims : Dict[str, str], optional, default None
    A map (dictionary) of persistent volumes to be mounted to the pod for this step. The map is from persistent
    volumes to the path to which the volume is to be mounted, e.g., `{'pvc-name': '/path/to/mount/on'}`.
shared_memory: int, optional
    Shared memory size (in MiB) required for this step
port: int, optional
    Port number to specify in the Kubernetes job object
compute_pool : str, optional, default None
    Compute pool to be used for for this step.
    If not specified, any accessible compute pool within the perimeter is used.
hostname_resolution_timeout: int, default 10 * 60
    Timeout in seconds for the workers tasks in the gang scheduled cluster to resolve the hostname of control task.
    Only applicable when @parallel is used.
qos: str, default: Burstable
    Quality of Service class to assign to the pod. Supported values are: Guaranteed, Burstable, BestEffort

security_context: Dict[str, Any], optional, default None
    Container security context. Applies to the task container. Allows the following keys:
    - privileged: bool, optional, default None
    - allow_privilege_escalation: bool, optional, default None
    - run_as_user: int, optional, default None
    - run_as_group: int, optional, default None
    - run_as_non_root: bool, optional, default None

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -64,12 +64,16 @@ "\t\n", "\t\n", "\t\n", + "\t\n", "\t\n", "\t\n", + "\t\n", "\t\n", "\t\n", "\t\n", - "\t\n", + "\t\n", + "\t\n", + "\t\n", "\t\n", "\t\n", "\t\n", @@ -77,11 +81,15 @@ "\t\n", "\t\n", "\t\n", + "\t\n", + "\t\n", + "\t\n", + "\t\n", "
\n", "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/step-decorators/kubernetes.md b/docs/api/step-decorators/kubernetes.md index c62cdd74..18d75059 100644 --- a/docs/api/step-decorators/kubernetes.md +++ b/docs/api/step-decorators/kubernetes.md @@ -7,7 +7,7 @@ For options related to `tmpfs`, see [Using `metaflow.S3` for in-memory processin - + @@ -18,12 +18,16 @@ For options related to `tmpfs`, see [Using `metaflow.S3` for in-memory processin + + - + + + @@ -31,6 +35,10 @@ For options related to `tmpfs`, see [Using `metaflow.S3` for in-memory processin + + + +
diff --git a/docs/api/step-decorators/pypi.ipynb b/docs/api/step-decorators/pypi.ipynb index bb18fed5..4e44aaaa 100644 --- a/docs/api/step-decorators/pypi.ipynb +++ b/docs/api/step-decorators/pypi.ipynb @@ -18,10 +18,10 @@ "id": "8d5bb116", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:02.673485Z", - "iopub.status.busy": "2024-07-25T06:17:02.673407Z", - "iopub.status.idle": "2024-07-25T06:17:03.004750Z", - "shell.execute_reply": "2024-07-25T06:17:03.004331Z" + "iopub.execute_input": "2025-08-30T21:15:40.150261Z", + "iopub.status.busy": "2025-08-30T21:15:40.150165Z", + "iopub.status.idle": "2025-08-30T21:15:40.382655Z", + "shell.execute_reply": "2025-08-30T21:15:40.382348Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "29af6ee3", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:03.009355Z", - "iopub.status.busy": "2024-07-25T06:17:03.009178Z", - "iopub.status.idle": "2024-07-25T06:17:03.015047Z", - "shell.execute_reply": "2024-07-25T06:17:03.014828Z" + "iopub.execute_input": "2025-08-30T21:15:40.384732Z", + "iopub.status.busy": "2025-08-30T21:15:40.384588Z", + "iopub.status.idle": "2025-08-30T21:15:40.390145Z", + "shell.execute_reply": "2025-08-30T21:15:40.389963Z" } }, "outputs": [ @@ -65,7 +65,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/step-decorators/resources.ipynb b/docs/api/step-decorators/resources.ipynb index 257e1354..9c688f31 100644 --- a/docs/api/step-decorators/resources.ipynb +++ b/docs/api/step-decorators/resources.ipynb @@ -18,10 +18,10 @@ "id": "c8aea2b0", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:58.369242Z", - "iopub.status.busy": "2024-07-25T06:16:58.369161Z", - "iopub.status.idle": "2024-07-25T06:16:58.665405Z", - "shell.execute_reply": "2024-07-25T06:16:58.665060Z" + "iopub.execute_input": "2025-08-30T21:15:35.489270Z", + "iopub.status.busy": "2025-08-30T21:15:35.489175Z", + "iopub.status.idle": "2025-08-30T21:15:35.701945Z", + "shell.execute_reply": "2025-08-30T21:15:35.701660Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "1d16a1c7", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:58.668000Z", - "iopub.status.busy": "2024-07-25T06:16:58.667823Z", - "iopub.status.idle": "2024-07-25T06:16:58.673649Z", - "shell.execute_reply": "2024-07-25T06:16:58.673353Z" + "iopub.execute_input": "2025-08-30T21:15:35.704097Z", + "iopub.status.busy": "2025-08-30T21:15:35.703901Z", + "iopub.status.idle": "2025-08-30T21:15:35.709338Z", + "shell.execute_reply": "2025-08-30T21:15:35.709118Z" } }, "outputs": [ @@ -51,7 +51,7 @@ "data": { "text/html": [ "\n", - "

decorator @resources (...)[source]

metaflow

Specifies the resources needed when executing this step.

Use `@resources` to specify the resource requirements
independently of the specific compute layer (`@batch`, `@kubernetes`).

You can choose the compute layer on the command line by executing e.g.
```
python myflow.py run --with batch
```
or
```
python myflow.py run --with kubernetes
```
which executes the flow on the desired system using the
requirements specified in `@resources`.

Parameters
----------
cpu : int, default 1
    Number of CPUs required for this step.
gpu : int, default 0
    Number of GPUs required for this step.
disk : int, optional, default None
    Disk size (in MB) required for this step. Only applies on Kubernetes.
memory : int, default 4096
    Memory size (in MB) required for this step.
shared_memory : int, optional, default None
    The value for the size (in MiB) of the /dev/shm volume for this step.
    This parameter maps to the `--shm-size` option in Docker.

\n", + "

decorator @resources (...)[source]

metaflow

Specifies the resources needed when executing this step.

Use `@resources` to specify the resource requirements
independently of the specific compute layer (`@batch`, `@kubernetes`).

You can choose the compute layer on the command line by executing e.g.
```
python myflow.py run --with batch
```
or
```
python myflow.py run --with kubernetes
```
which executes the flow on the desired system using the
requirements specified in `@resources`.

Parameters
----------
cpu : int, default 1
    Number of CPUs required for this step.
gpu : int, optional, default None
    Number of GPUs required for this step.
disk : int, optional, default None
    Disk size (in MB) required for this step. Only applies on Kubernetes.
memory : int, default 4096
    Memory size (in MB) required for this step.
shared_memory : int, optional, default None
    The value for the size (in MiB) of the /dev/shm volume for this step.
    This parameter maps to the `--shm-size` option in Docker.

\n", "
\n", "\n", "\n", @@ -60,7 +60,7 @@ "\n", "\n", "\t\n", - "\t\n", + "\t\n", "\t\n", "\t\n", "\t\n", @@ -68,7 +68,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/step-decorators/resources.md b/docs/api/step-decorators/resources.md index 820ec44e..715cf6c3 100644 --- a/docs/api/step-decorators/resources.md +++ b/docs/api/step-decorators/resources.md @@ -14,7 +14,7 @@ Note that `@resources` takes effect only when combined with another decorator li - + diff --git a/docs/api/step-decorators/retry.ipynb b/docs/api/step-decorators/retry.ipynb index 79cca018..48a7e62b 100644 --- a/docs/api/step-decorators/retry.ipynb +++ b/docs/api/step-decorators/retry.ipynb @@ -18,10 +18,10 @@ "id": "627487a4", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.552838Z", - "iopub.status.busy": "2024-07-25T06:16:59.552756Z", - "iopub.status.idle": "2024-07-25T06:16:59.832917Z", - "shell.execute_reply": "2024-07-25T06:16:59.832549Z" + "iopub.execute_input": "2025-08-30T21:15:37.478143Z", + "iopub.status.busy": "2025-08-30T21:15:37.478052Z", + "iopub.status.idle": "2025-08-30T21:15:37.706804Z", + "shell.execute_reply": "2025-08-30T21:15:37.706547Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "af50a6d2", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:16:59.835195Z", - "iopub.status.busy": "2024-07-25T06:16:59.835052Z", - "iopub.status.idle": "2024-07-25T06:16:59.840908Z", - "shell.execute_reply": "2024-07-25T06:16:59.840631Z" + "iopub.execute_input": "2025-08-30T21:15:37.709095Z", + "iopub.status.busy": "2025-08-30T21:15:37.708941Z", + "iopub.status.idle": "2025-08-30T21:15:37.713902Z", + "shell.execute_reply": "2025-08-30T21:15:37.713679Z" } }, "outputs": [ @@ -65,7 +65,7 @@ "
" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/step-decorators/secrets.ipynb b/docs/api/step-decorators/secrets.ipynb index fe87e2d3..11ce70e5 100644 --- a/docs/api/step-decorators/secrets.ipynb +++ b/docs/api/step-decorators/secrets.ipynb @@ -16,10 +16,10 @@ "id": "627487a4", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:01.505025Z", - "iopub.status.busy": "2024-07-25T06:17:01.504912Z", - "iopub.status.idle": "2024-07-25T06:17:02.122202Z", - "shell.execute_reply": "2024-07-25T06:17:02.121862Z" + "iopub.execute_input": "2025-08-30T21:15:39.399793Z", + "iopub.status.busy": "2025-08-30T21:15:39.399717Z", + "iopub.status.idle": "2025-08-30T21:15:39.606129Z", + "shell.execute_reply": "2025-08-30T21:15:39.605815Z" } }, "outputs": [], @@ -38,10 +38,10 @@ "id": "af50a6d2", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:02.126004Z", - "iopub.status.busy": "2024-07-25T06:17:02.125801Z", - "iopub.status.idle": "2024-07-25T06:17:02.133368Z", - "shell.execute_reply": "2024-07-25T06:17:02.132965Z" + "iopub.execute_input": "2025-08-30T21:15:39.608147Z", + "iopub.status.busy": "2025-08-30T21:15:39.608009Z", + "iopub.status.idle": "2025-08-30T21:15:39.613887Z", + "shell.execute_reply": "2025-08-30T21:15:39.613682Z" } }, "outputs": [ @@ -49,20 +49,21 @@ "data": { "text/html": [ "\n", - "

decorator @secrets (...)[source]

metaflow

Specifies secrets to be retrieved and injected as environment variables prior to
the execution of a step.

Parameters
----------
sources : List[Union[str, Dict[str, Any]]], default: []
    List of secret specs, defining how the secrets are to be retrieved

\n", + "

decorator @secrets (...)[source]

metaflow

Specifies secrets to be retrieved and injected as environment variables prior to
the execution of a step.

Parameters
----------
sources : List[Union[str, Dict[str, Any]]], default: []
    List of secret specs, defining how the secrets are to be retrieved
role : str, optional, default: None
    Role to use for fetching secrets

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", "\n", "\n", "\t\n", + "\t\n", "\n", "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/step-decorators/secrets.md b/docs/api/step-decorators/secrets.md index 86028eb3..b2a3a2fb 100644 --- a/docs/api/step-decorators/secrets.md +++ b/docs/api/step-decorators/secrets.md @@ -5,13 +5,14 @@ The `@secrets` decorator allows you to access secrets, such as database credenti - + + diff --git a/docs/api/step-decorators/step.ipynb b/docs/api/step-decorators/step.ipynb index 049cd566..7c1d6210 100644 --- a/docs/api/step-decorators/step.ipynb +++ b/docs/api/step-decorators/step.ipynb @@ -18,10 +18,10 @@ "id": "627487a4", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:00.752153Z", - "iopub.status.busy": "2024-07-25T06:17:00.752043Z", - "iopub.status.idle": "2024-07-25T06:17:01.014513Z", - "shell.execute_reply": "2024-07-25T06:17:01.014212Z" + "iopub.execute_input": "2025-08-30T21:15:38.147424Z", + "iopub.status.busy": "2025-08-30T21:15:38.147351Z", + "iopub.status.idle": "2025-08-30T21:15:38.392184Z", + "shell.execute_reply": "2025-08-30T21:15:38.391902Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "af50a6d2", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:01.017025Z", - "iopub.status.busy": "2024-07-25T06:17:01.016865Z", - "iopub.status.idle": "2024-07-25T06:17:01.021112Z", - "shell.execute_reply": "2024-07-25T06:17:01.020885Z" + "iopub.execute_input": "2025-08-30T21:15:38.394428Z", + "iopub.status.busy": "2025-08-30T21:15:38.394270Z", + "iopub.status.idle": "2025-08-30T21:15:38.398172Z", + "shell.execute_reply": "2025-08-30T21:15:38.397923Z" } }, "outputs": [ @@ -51,9 +51,9 @@ "data": { "text/html": [ "\n", - "

function step [source]

metaflow

Marks a method in a FlowSpec as a Metaflow Step. Note that this
decorator needs to be placed as close to the method as possible (ie:
before other decorators).

In other words, this is valid:
```
@batch
@step
def foo(self):
    pass
```

whereas this is not:
```
@step
@batch
def foo(self):
    pass
```

Parameters
----------
f : Union[Callable[[FlowSpecDerived], None], Callable[[FlowSpecDerived, Any], None]]
    Function to make into a Metaflow Step

Returns
-------
Union[Callable[[FlowSpecDerived, StepFlag], None], Callable[[FlowSpecDerived, Any, StepFlag], None]]
    Function that is a Metaflow Step

\n", + "

function step [source]

metaflow

Marks a method in a FlowSpec as a Metaflow Step. Note that this
decorator needs to be placed as close to the method as possible (ie:
before other decorators).

In other words, this is valid:
```
@batch
@step
def foo(self):
    pass
```

whereas this is not:
```
@step
@batch
def foo(self):
    pass
```

Parameters
----------
f : Union[Callable[[FlowSpecDerived], None], Callable[[FlowSpecDerived, Any], None]]
    Function to make into a Metaflow Step

Returns
-------
Union[Callable[[FlowSpecDerived, StepFlag], None], Callable[[FlowSpecDerived, Any, StepFlag], None]]
    Function that is a Metaflow Step

\n", "
\n", - "\n", + "\n", "\n", "\n", "\n", @@ -67,7 +67,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, diff --git a/docs/api/step-decorators/step.md b/docs/api/step-decorators/step.md index 87f50c39..446064c0 100644 --- a/docs/api/step-decorators/step.md +++ b/docs/api/step-decorators/step.md @@ -7,7 +7,7 @@ Use `@step` to construct Metaflow workflows. For more information, see [Basics o - + diff --git a/docs/api/step-decorators/timeout.ipynb b/docs/api/step-decorators/timeout.ipynb index f57fd574..e09f2d09 100644 --- a/docs/api/step-decorators/timeout.ipynb +++ b/docs/api/step-decorators/timeout.ipynb @@ -18,10 +18,10 @@ "id": "627487a4", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:03.018541Z", - "iopub.status.busy": "2024-07-25T06:17:03.018463Z", - "iopub.status.idle": "2024-07-25T06:17:03.292350Z", - "shell.execute_reply": "2024-07-25T06:17:03.292035Z" + "iopub.execute_input": "2025-08-30T21:15:40.899541Z", + "iopub.status.busy": "2025-08-30T21:15:40.899459Z", + "iopub.status.idle": "2025-08-30T21:15:41.104548Z", + "shell.execute_reply": "2025-08-30T21:15:41.104217Z" } }, "outputs": [], @@ -40,10 +40,10 @@ "id": "af50a6d2", "metadata": { "execution": { - "iopub.execute_input": "2024-07-25T06:17:03.294731Z", - "iopub.status.busy": "2024-07-25T06:17:03.294553Z", - "iopub.status.idle": "2024-07-25T06:17:03.300684Z", - "shell.execute_reply": "2024-07-25T06:17:03.300430Z" + "iopub.execute_input": "2025-08-30T21:15:41.106598Z", + "iopub.status.busy": "2025-08-30T21:15:41.106465Z", + "iopub.status.idle": "2025-08-30T21:15:41.112213Z", + "shell.execute_reply": "2025-08-30T21:15:41.111997Z" } }, "outputs": [ @@ -66,7 +66,7 @@ "" ], "text/plain": [ - "" + "" ] }, "execution_count": 2, From 7b9b2dee60af49cfd16355fed432b36ccf8b46b0 Mon Sep 17 00:00:00 2001 From: Ville Tuulos Date: Sat, 30 Aug 2025 14:24:32 -0700 Subject: [PATCH 3/3] high-res version of dag pics --- static/assets/dag-branch.png | Bin 22188 -> 117768 bytes static/assets/dag-conditional.png | Bin 22390 -> 113641 bytes static/assets/dag-foreach.png | Bin 16604 -> 91447 bytes static/assets/dag-linear.png | Bin 9936 -> 49788 bytes static/assets/dag-nested.png | Bin 52783 -> 281808 bytes static/assets/dag-recursion.png | Bin 11248 -> 60791 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/static/assets/dag-branch.png b/static/assets/dag-branch.png index 378687a093daeca188934d5f03990e29eb60ce79..a872c53f3041b9abe0ebc466c6756f009861c1e7 100644 GIT binary patch literal 117768 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 z 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 I z@BSyqKrOZXuKH(4^tHv1iAQ?$ZOcM^qtLRi3_xv*P!7dz`_zkN-B#dF)fybnp1mQDL%g@@^*W0UTVNqlsN(TR)G%Fo(%Oi9@^go_haU|baC{b(V zfZ(zmKAewgTX$tivpYo$NG!Tu;X{l+)q@HMBiBU9*vLZ)R^1pPh^FLfkd@~y+x$u0 zPuq8UOU(bl?DI_R0_=25P6#CA^NR^jmMWs#4$9qU-?NXV^3RrPXn^Ca@D_9|9s+nV z)=?z|UFNKC(i^>}AID&>CL@j37DSkkQedELD2d1M!;Aw{Q}?lEMUu4qMtbSE>PyI2 zS;tkBls>~q3u6PP%7CN`Br;w|QM&q>9dc>b6%>HuW`j4Cp3!Uz4rPPo2`!RD40>;MtFGW5v+8de<#fTGmM}8%N*O6XYR4q zHZ5p*a7rBH%k?f~J7C>cNPV@B5m*KmqC+jS;UVB`NeXIF3s+TBGwU`&<15HOe-@tU>iq2!7(5xv)2!e1 zvEn5zC6JMuQ2uAkKDU9&&&N5Oww<3op71W%icxN61^D~d3*{QqdSs8vLR}Q`glnsE z^*7bk)tDbXRAkhqx5c2-FR1tdXqmUTFI5UFV-jUbZcYx^;>(Z;G6Qky^oW6elq!SO zAMBZA0F`qLXfN?z5OdM_gPCjn&qY5MG`W}h_mScQPb(21H$d2hpHJBgja6vWmRR8z zi;TE~INzmn$)I%dW!@6-{L2_^BOMyBzBqgUIu~MsHfp@6_=NI+97^iBwO+Z$b1c`( zyi-$K`fy*xt32!gydge8l^G>SDoZ#HSq{Jf2oEZ=v{0K*FE?54E-@kS|F!@+2mS~V z`aGRDsAlRvKH9$7JLw8FezUoxrv-4ifm7I_Af*1$W88$7lbU+)x7ui^1_KXExW4NF z58hN`I-U~=U1GtwzATtj@~GO(0U6qa;7*AxAZP8=cCnGmUjQ=s2GOk=p8X3L%lqTfJ!`az6@YdYs~6(y-j zF8Bm6PkWnz-YNNyqfmlF!7JI1csIXLPsP46SBf`ppbq@1pDm{X{4g;!Z|@DUOl&=? zwHxxaNXyNF|GN);{sHRs1D_a}eP~=bQ5ozQ({(s8>%^L zWoH*1b%VYNT;x?^z*85~F^i6lZm0pACCbnZKbhSe&Ca@Jux>Sz{pZsV4~L5;$GoBy zyGD_WmT~c-+qTu!DmH2&qz%4>(w7l>TE-cGtvpGJ4?;Qqm14%v6S`$gI)e%LJrz>z zdy8msKm4mZkRh}2*SO|Cc2yjgV6Qi@agC-$72e+O4=1g>XDMjwCtmHZ2Sh;YN(nSf z!-}+I*G&&aMQjKMc_9E~EALzZ=Rg6`|GYWTQOR^G)Mqma)ZpM?6;IDLZDDz5%H184 z|5SPR0)8=DMpJ<6(YtrI+*q{<6{MvEsdU93z9?6w;I%uvBBXE`cPtKjv!nk52#6w9 z)OL>+crYUzdw4Q8V!%HJIy#5dfcs23=XEx%T8XPDuik73kJC|-nv*&zC`oJ!42|r= zpOeCtGsg~eE!BT{)D`?iGLK=XR?8=m$Cbgm#ZCTqRY{0P!pM`Ow=@%aSty!9(R`U} zjaFuKoqo@$Js(TS30OKuVgP$#owAE5H$R^OMD>tMC8RuXgu)1p2Od^zHzzB)C#SeW zdsBHD*ppxf!hZs=uCRV!w&m^WZr%O9HR#(GAe4w7$}RGlPXHwex@nGC0lN5E#{FG0 z6?JS?$Pyty5KBbWb!3Y8R+e|BRIOATz$pdRzBo=`LA%;W(!JkrCOa{5)u@AX0?LY} zMBgS!`8bN^MyEB6R-e%(-iwx*BBgKs{{Ay~Q_2&HmfxkSvc=3#W)>x&i>kCWP%0dkmu!At_pBI|L5O^7O7ROfYA^#lA4MR;~vTFn0vzI7o(zdWDiS-so1Pj&#E z00i8>_HaOD$UbTS4rzryP^UePo9i%(pswdrA)jyQpn$Puao#UwOZ!z-%$>~mxz6uD z6k=>}=h#yYv(ZweuR*8+tFXZVwLdOZl24%pY?7ef8uF%4z&xpT>v$$@SA7w_v}Gm$ zoKN3lLKeMc?o0#BQgi;|>mWN&@6rj}!7mLQQk2H zc33IHp&te6PzelFxws2m^a+}7a1GB0nSfj!E@=l2$mqJe@Ipyi+}@y5dm@3t$P&B1 z3;O}G!9g*nI%-6GHJdi;m`4HtE3Z%@vPis`RG2)))idhI3=y7d?4te^B^=;)cCaQ{ z&pc(oj(2n+QQxz)q9SwXTIv*gHa?;ms`-BZ{v9Ob?Ol=Q&7uY-%>l~{pC%)h4Zv&l zDrGi2e0;j#9}|fA?uWXLOWN@z#?g-b&*%0t`NTm!90_FJ<0nAo{cdZ7)^gO^id^Nh zpHxKDw~|j_B;$jSkbXB!`OI9)pBp(|wEE4LBa}E*Cw}HzX|M+S;vEFIUby~aF8Ip> zabD7Yqh=NIWf<=Hze;LzG_F{8KgtPhNr0@bR%)Tk`F&5GNCL3WQSI5FQONq-6J+LR z9`KzSz~6vv=*sTLS{Rj5Z}9ZU8PNyb%qpN$JSQpk<9e z5?;55Gz0H?ObMjFtAq6B8)_Ut$WbBF+V`%>st}F{0Ix_Xf~IyiE-vojte3s|Hr)T{ zq}wor?AD(PPY{I$Q}3xwz#xhOfz$swhsrp^K;=M7IxB&wg|41Xpl ztOuq_oQU&+^Rv{hiZ@i2Tca?JPor*Fq7(1r4(b7?QyKwnI2tg^Qwkn=R5VolvCi^o;8Pb4!c(n7 z?qaY)qs{91rt!9LVZQnF)tQ&XDybX`?ze#tWp*=XE;5JXxxj8H-k|=V7=0%#xY)pZmKW z`u1e)6E4ow%&p78q~AgX2?0D;tdP4qkM&ZWR5>XrOUhEiSw%(<__BY7mL~UT^0C&T zV+d!g4I6QQ(a^OEOcqx-JIjA`hoDJ)vv{?GiH|7g{nVsOyIyCdQE7Gp`>qT|3^7=3iI3Jgr25{9GlFa8CQ;w{{oTDi zWivBMQ*-kXZ)|=0_h)5}3ES>&iIlJ5Gd*-HSlwm-b*k-6$VuIWJTZ32PcUrj+YT+A zC-y$mvo^Bh!8AA}e)dVBV;6KZ-`tD`8}$(iNbK{TAMZ+y|2#O*#APPReBPv#BkPwI zrUl+sfxL^CrQToGn`rtp>8h6_R}LUDy1ZU8ZXn_?4ieI~;!G%6>8h*&1f@P?^eqO=LMXoTwa$UTIE%x zpMym1$jP}vK6H99&z46E8I&y$7wZxagCpj;!KX%p`7m+4RV_|IQZUReMAGHo6CRGF z^)(qVh<(d^vZz!Xw|hj^m>yXEgh7bN4J-rD^=bPpNKY>-8}!!}OA!HlQH8tFSw4P< z<-Y?vN{LT-|7wGD#x2e|K0kl!{!(EM7#YZ?bBRWz)~m^bWkCQpk1C3Y=_l=hiT7LsKx#8>N530`Nq9g*V_Jf# z1@~uh2SYVi-3x9$U<){vx^l#<+k6)acADMAKdR2SZc{2|nrztJcemBzQVpohUrZL= zrC?69EaAF^-XbD2R0`z*7uC5NRNHp+EDMd`n%5z<3<94U7AB_br*4wVk3vh_xWs{K z(Ui4sN}wfUb*2<eI&`C3@%Mj65l8+S#FD$sB_$L{>*b3C}4Y-E3IZ8{e*KrnJwZ7%;v4H3lJT0Hgi}QR|VIe z`jUpP8HA1`t0r`{YNhI`odO(0uABMSN0ea=$+^Z`MQY28`m0oIAE2Mog^Kh1Ecb7n zri7bnxXfpfTol|d*4$|j>SVmNZ!E%F6eTHECufzTSs5(&gcitp+(?esW5jGK(^L#$16YGGIzm~M%F1O=a)@Cn)LVf!t+^ass}?L zB@(rq@Mtx1=yklr3J&hf)S+3PPex@Zxv}x?jJxQS5`0P`vT?Gwq9@@s_ppm*=t#xCAA-v$N4hOZx}bzmw;K#^~VL%n%!#}+X&F(G#_ZHeYo@Unz* z6(3ldIzK;l;7{AHzKu(Yb3bId0#Bb25QE?#TJRo)N=3C2p)XbNjZQ9|P|ZZMhh*xw z&smdD-Af>Rj7#LhiDko7m+TrqF#LSK^GidmgQM^X&IHP06wnct7JZ5Jd6~1#x1AjF zaFB}h+eh+4YUq?C6M03DMWVLY%qI5OW~uIbzbpo9 zqdpk~+yp=mI{Gak-Uq)k`cPI84gO^X2yT`rB5y6!bW3c>Br<;7kt2+(j}AA<+T*TU zy$GL-%xi%WQj(u8U>y>5fbBv=HMurNja)BpNkeWU4rPvghjwsCqz*f_E~zFG+#xA0 z-L`ULJoSJ`{7AE2!8uaan2w6N) zCSko(7s@r#=Vn&J6c|UGN!wW^JH<-lQ}&;=%WBxGb9Cae7EJnLyVkZipkuwh_bcge z&m;KYji|ZNrwMxe_(VBJHjxOq4=XXgmFT{r5N%&{^P!y2)~p9_A3&+k`FfEuqYcHVn6kHZ?@#8;Q`w@z8H5)0!!%(v|5PcoDhPc0S0+OK~D4 zeUi3M*}X&vkBFqsHEX?gG+3%iPD--a3H4uscrXy~$nb+!PwhH0;GucF02(-Edu;+Y zC${TkXYFp4Yvz5d&>LwEJ0UU^Q&nFV+q^QR15uBYVb5v*&RVLPO!J(9rfsY&4RE&Yw%l zF1g)!aG(Ic2`B~p`4DJ&miz+qR?kp1U|$%JPih)4hml zP7f$L`CdY~9isvalG@6qMLXb0P6?VQZk`Ftq3#5F9i}^?GV;f90gpK3@gV z!E%{$b8}NXgJBE{!$n6{g4o$e53E&(OjdDre+(Tf1A|;>*df91Ru}qnZ6Fgd-5FzZ zFyBfhV4|L@0xsx#4!@LPj4ee6>smw4Zmym!0Vp=JmZ)+82LJ`EmSl7KjE3N|qa+PS zsD1GFg{2Iw95q3u3cveFj7%SIPe4jZYj${{aJ2aIyOL7gLC1nhbg?S6Xr}|TDS6fP z63*7Niv9BLJsukz=jh~Lm7tO=8tdy3Om4n>`NDwiSz++gK|$Rn8?$_wy4X^ypLH^Y zJ-pY^bSJW9x+>Y6zNx3%##48QJY_B#5vPxpHvHEhBHSCQ9rK=_N!zQ0cLDq4ellq9 zKM->6+!`pp(>0Tl4@vNOK47S^e%8K1ZPX|Bb;O8>i1;(y)AJ@Kr=N|BxfcAjKloi# zqp=qX=HtV{1rYK&pW{kkeD2eLH(Y%`%;Bmo@#!r>(fo#11~`IpB3#o_uX2eR z+pM<4hf1V`c+djt6kNJn#_Yd=g7-ar%-@fOflR{9!JcHol?>pvRgkoEAdQ|m`VL#08GDjVMO z0Oj3g75m4{(Ot6~gtu=wu-y|lqvY@$VrtJ0Hl^z@L$ zLsyAV63#sa!NdVX>FqUO!X~b`+|GgtFmLW0$uA*Np!sfdfZnY~X0Bi)@w8dZehL@z zAi4GHMd`-fS=7p1c}GGI--$D zSfh9D8r;bH_GO{k5Hs^fnP3kvxfN(R9Grq;8xq`C-_z?(wu*0`OH(jXDp#!6>Vr~S z^2)z-S%|D}6g}Db1jb>RNNTeXy>GKOcKzi`<}1aKqa68xA2b-7Qi4%IY{)h;M3=A? zBNr5IrO9GVB5uO- zd46j8?CI5YY#hD$tinZ77Sl&!RmAJTTuxGw*&9Dw)|W+qqhtm)2YEMtH#1@#nAiFh z$FCw1+tSuSTv@~pN?K+V?UZqg?`#*n>)w9`CCN6s3zY~BmqO`Rb)pBzI}=*cFdl)8 zeNNKHpb;o7jB?6=T=J~;f6m)U8*5J%!XiX15(=`Uk#b2)Q`SK1P=F5lIR~U@iE27G zXos44Sy^A7(Y4Ctg3*sTp6+N#&y&h5JG|95mOLenY zy@-@S+yP0sSfobsDtG9YyFQG|{Ii$JjplxOAG;nb`}vdkQoaV&%a6(TKe62cKVu#q zAJ2^8;vL7%Tw9f(SdfsSVc5IK|qKP z=*5(p7>q@&4`C?@Px&!!$G{BwnZ*xGSEPq!39h3foRcy%g)S&G-_hxG)qi<(sVv=3 zUUUec+b{QceL1n;uGdj_R`wn_fhH!ITV5{BSu)?HGdC+R1=%a3#~y0#JKwiKAkg~> zS&v!b5`LJsBk)Ul+3y+mwR*;59N?S(d5UnSv`9~T(X>}dTDz3*SMZ2~ zNOLBp3R)LtP4RLxksLe3h}ZDWlUV*42ISD12-i2xQnfL!tcV#Z&ZjFw-0cVfI+;|= zww_AzL5f{|JM`dq?}AWQ&mrleQEDR!WX%+#?8pBVdZL(=(JLH zW{~_e`2PL@Jh8dvZZa9jZjR;*=4`Bv&0W)DKT`Kk3C;J9(#{R4@-%M>k_}2~%@y@| zbSZRZNDYk$h;EtWqBDv89-ze~BzAX(VwKg@DBcAdufd_miF(@|mZ4$5GGV`x`3Abv zr{tOMjpMP;lJb*Ajr#X_xJHnHILXOHH^jz6bitwht0mOfNxS`7CqLzEgnaST)DzOf z)__g?@pZ3Erf=ps52PgImJ3RxAaGRt2@Kzv&dCu2xmqv+uu)3lJ|<1`W@`QDp{Jne z>tWd3l{DOi-jGEh^K@xsC0ai>6dXv5C)?$eGE{>PkBX9Z+O_*-PkU4bj6-2P<}0;_ z%rKFHwiwk#FPME+R8@^5!DVJ+qx0~CA#t@YDDo83h1b@b5eH3N< z*?GD^?n$ut`@I&Gk>ef#dyqimYuSz&xs<+Hj4el6IVmI&x$nWq z(GiH-ZYzLmEq-EEc@ zQ}F+B_0~~Uc3;%!0S|FV0i`>oyE{ZmTDlvgq&oxzr8`7ITDrTtB?LrLT9B5GyU+W( z-?(>tWALX#IM3P7T64`g*W9M?UdnMrzZHR_UeM1 zk+e}RHS{S#i#^4#>z{Q|q|)j*vajdghxv)jQ-331eEvdoUm@Hb*BSR}8GUeTboI7f zfc}dDWuW&4$)AH935RbdqN#+*TVGl%ERL>e$}J?7Q*-85^oj1m}GLI zKNI2@a9(+fd$N==pfp+CU;qm|I5rArXx06Yv}Ermg+_q(-|<92RT84lmy(}q8rgYH zK%l6lm4Z?+p;$&A96e&As~5+3t1>&XIa^luH0m>^gJ_Mfd2oUhhSB)wi2>~z0d(yz zy1cH8MT>$od+7Fo)P4PhKCImJv<;cuV;++S(qaho|!vUYOGsUbq=Z; zqG4fGznffe!>z(bkQveZBKpmB;p>*ArDZ}^mSeVZRRJwWI3%lR-Qtf>2gVED>e*Q( zONsR>E))V!`7Q_O(-UKT{}Gpm@z4AuSPm&6ODCuR<%qubUXPTBc?+)9Mn?Iv@>lxF zP;Gp_2njmPh8nJpJK~RI1`8!`)z3&PPD!b}whK<5lT&iO^2`s%*J5(8ZGR#YBd-r@D$aMnqx+IhV^7rJfv;hSXJqCTR4{!Uv?Us_6THpVNKP+dUKk!c*>2$C zQiJma+)sL&jrb^-W^K+!_aE}AYvff3_en>>nQ8Sr+U@}vJcYlS(&W51p6?elG%M=0 z-b5RnW58%NQuo@pb#{@Z>!98Qs(F`&HM z&-IVxv_E#4N!M11{cG+*+xu1iv3;C$$L;4?s#E(BnIEGStGtgE{BVyQ5LsW>PtW`) zBq91nTES6-4Kv-$_|Wso0oD}5zU_L^cU3%MN%3vl;iTa&0f{oA2bHR^uNLwfnL6E^ znr8o759Hi*iMFZ&&KdOYhU_r1K$c_5$vEA${*R<2YD}-5!@H9&>e{2Odq2$GMdLux zVq+kBKq}O?VyM<9K|;qS!l1QO$(xmlXuU;O@CY`TB+}U_mGJw`LuVV03Sam`Ic~8!s-ut9(TL;OKO#*PJ$f8UT=vPoFydx}abroo==y*WQ!MEY&a<^GWC`T)gAUE#ke`aTqb@d9{VWGz~L(y;{e z_cJi>IjlG(!T?yzfFdX5yBdz$jxqu5iaBSc89un}yDYtJt|71h;S zLO-ZyjKT-2GJFIXiEL5-A!@w1_;@O?2T28v|q^oleg9QV%AzCPvu0j@$g)ADtBuOQj)Glh2E=_ib!4 zdHMOZ!OczDJBR?3Ts=kD{7OMi&Sz9RF2v5UU8MSYF#Hhr^KTXCfb1&_m@79mu|G3# zTa=Zt1pX;xy_GUAj9qGI7TUd<iGkn4* z0zk?Ci}l`kbMIT&n`uqAw&Y4HYw?dBj)±QtByVihab6(-^2R7oo0rFwH~ZJ9dW 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 literal 22188 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 literal 16604 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 LB2zA98uWhvlzZe{ diff --git a/static/assets/dag-nested.png b/static/assets/dag-nested.png index 7b17f9f6b2e5afa72898e0d8aa3d47b73528bebf..ec5b42594f55f6447c56bd615393f5277770d54d 100644 GIT binary patch literal 281808 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