[{"data":1,"prerenderedAt":730},["ShallowReactive",2],{"navigation":3,"api-navigation":184,"\u002Fgetting-started":206,"docyard:crossref-index":729},[4,8,155,174,180],{"title":5,"path":6,"stem":7},"Getting Started","\u002Fgetting-started","1.getting-started",{"title":9,"path":10,"stem":11,"children":12},"Learn","\u002Flearn","2.learn",[13,15,66,99,133],{"title":9,"path":10,"stem":14},"2.learn\u002Findex",{"title":16,"path":17,"stem":18,"children":19},"Tutorials","\u002Flearn\u002Ftutorials","2.learn\u002F1.tutorials\u002Findex",[20,21,26,30,34,38,42,46,50,54,58,62],{"title":16,"path":17,"stem":18},{"title":22,"path":23,"stem":24,"icon":25},"Why Laco?","\u002Flearn\u002Ftutorials\u002Fwhy-laco","2.learn\u002F1.tutorials\u002F01.why-laco","i-lucide-notebook",{"title":27,"path":28,"stem":29,"icon":25},"First Steps with Laco","\u002Flearn\u002Ftutorials\u002Ffirst-steps","2.learn\u002F1.tutorials\u002F02.first-steps",{"title":31,"path":32,"stem":33,"icon":25},"Lazy Call and Partial","\u002Flearn\u002Ftutorials\u002Flazy-call-and-partial","2.learn\u002F1.tutorials\u002F03.lazy-call-and-partial",{"title":35,"path":36,"stem":37,"icon":25},"Hyperparameters and Interpolation","\u002Flearn\u002Ftutorials\u002Fhyperparameters-and-interpolation","2.learn\u002F1.tutorials\u002F04.hyperparameters-and-interpolation",{"title":39,"path":40,"stem":41,"icon":25},"Loading, Saving, and the CLI","\u002Flearn\u002Ftutorials\u002Floading-saving-cli","2.learn\u002F1.tutorials\u002F05.loading-saving-cli",{"title":43,"path":44,"stem":45,"icon":25},"Nested Configs and Containers","\u002Flearn\u002Ftutorials\u002Fnested-configs-and-containers","2.learn\u002F1.tutorials\u002F06.nested-configs-and-containers",{"title":47,"path":48,"stem":49,"icon":25},"Typed Groups and Schemas","\u002Flearn\u002Ftutorials\u002Ftyped-groups-and-schemas","2.learn\u002F1.tutorials\u002F07.typed-groups-and-schemas",{"title":51,"path":52,"stem":53,"icon":25},"Pipeline Configs","\u002Flearn\u002Ftutorials\u002Fpipeline-configs","2.learn\u002F1.tutorials\u002F08.pipeline-configs",{"title":55,"path":56,"stem":57,"icon":25},"Tasks and the App Loop","\u002Flearn\u002Ftutorials\u002Ftasks-and-app-loop","2.learn\u002F1.tutorials\u002F09.tasks-and-app-loop",{"title":59,"path":60,"stem":61,"icon":25},"Tracing","\u002Flearn\u002Ftutorials\u002Ftracing","2.learn\u002F1.tutorials\u002F10.tracing",{"title":63,"path":64,"stem":65,"icon":25},"Production Patterns","\u002Flearn\u002Ftutorials\u002Fproduction-patterns","2.learn\u002F1.tutorials\u002F11.production-patterns",{"title":67,"path":68,"stem":69,"children":70},"Concepts","\u002Flearn\u002Fconcepts","2.learn\u002F2.concepts\u002Findex",[71,72,76,80,84,88,92,95],{"title":67,"path":68,"stem":69},{"title":73,"path":74,"stem":75},"Config as Python","\u002Flearn\u002Fconcepts\u002Fconfig-as-python","2.learn\u002F2.concepts\u002F1.config-as-python",{"title":77,"path":78,"stem":79},"Lazy Construction","\u002Flearn\u002Fconcepts\u002Flazy-construction","2.learn\u002F2.concepts\u002F2.lazy-construction",{"title":81,"path":82,"stem":83},"Lie-Typing","\u002Flearn\u002Fconcepts\u002Flie-typing","2.learn\u002F2.concepts\u002F3.lie-typing",{"title":85,"path":86,"stem":87},"Interpolation","\u002Flearn\u002Fconcepts\u002Finterpolation","2.learn\u002F2.concepts\u002F4.interpolation",{"title":89,"path":90,"stem":91},"Typed Groups","\u002Flearn\u002Fconcepts\u002Ftyped-groups","2.learn\u002F2.concepts\u002F5.typed-groups",{"title":59,"path":93,"stem":94},"\u002Flearn\u002Fconcepts\u002Ftracing","2.learn\u002F2.concepts\u002F6.tracing",{"title":96,"path":97,"stem":98},"App Loop","\u002Flearn\u002Fconcepts\u002Fapp-loop","2.learn\u002F2.concepts\u002F7.app-loop",{"title":100,"path":101,"stem":102,"children":103},"How-To Guides","\u002Flearn\u002Fhow-to","2.learn\u002F3.how-to\u002Findex",[104,105,109,113,117,121,125,129],{"title":100,"path":101,"stem":102},{"title":106,"path":107,"stem":108},"Override Configs","\u002Flearn\u002Fhow-to\u002Foverride-configs","2.learn\u002F3.how-to\u002F1.override-configs",{"title":110,"path":111,"stem":112},"Safe Loading","\u002Flearn\u002Fhow-to\u002Fsafe-loading","2.learn\u002F3.how-to\u002F2.safe-loading",{"title":114,"path":115,"stem":116},"Custom Resolvers","\u002Flearn\u002Fhow-to\u002Fcustom-resolvers","2.learn\u002F3.how-to\u002F3.custom-resolvers",{"title":118,"path":119,"stem":120},"Lint and Strict Mode","\u002Flearn\u002Fhow-to\u002Flint-and-strict","2.learn\u002F3.how-to\u002F4.lint-and-strict",{"title":122,"path":123,"stem":124},"Publishing a reproducible app with laco app","\u002Flearn\u002Fhow-to\u002Flaco-app","2.learn\u002F3.how-to\u002F5.laco-app",{"title":126,"path":127,"stem":128},"Reproduce an Experiment","\u002Flearn\u002Fhow-to\u002Freproduce-experiment","2.learn\u002F3.how-to\u002F6.reproduce-experiment",{"title":130,"path":131,"stem":132},"Migrate from argparse","\u002Flearn\u002Fhow-to\u002Fmigrate-from-argparse","2.learn\u002F3.how-to\u002F7.migrate-from-argparse",{"title":134,"path":135,"stem":136,"children":137},"Examples Curriculum","\u002Flearn\u002Fexamples","2.learn\u002F4.examples\u002Findex",[138,139,143,147,151],{"title":134,"path":135,"stem":136},{"title":140,"path":141,"stem":142},"Foundation Examples","\u002Flearn\u002Fexamples\u002Ffoundations","2.learn\u002F4.examples\u002F1.foundations",{"title":144,"path":145,"stem":146},"Building Blocks","\u002Flearn\u002Fexamples\u002Fbuilding-blocks","2.learn\u002F4.examples\u002F2.building-blocks",{"title":148,"path":149,"stem":150},"Typed-Group Variants","\u002Flearn\u002Fexamples\u002Ftyped-variants","2.learn\u002F4.examples\u002F3.typed-variants",{"title":152,"path":153,"stem":154},"End-to-End Pipelines","\u002Flearn\u002Fexamples\u002Fpipelines","2.learn\u002F4.examples\u002F4.pipelines",{"title":156,"path":157,"stem":158,"children":159},"Resources","\u002Fresources","3.resources",[160,162,166,170],{"title":156,"path":157,"stem":161},"3.resources\u002Findex",{"title":163,"path":164,"stem":165},"Integrations","\u002Fresources\u002Fintegrations","3.resources\u002F1.integrations",{"title":167,"path":168,"stem":169},"Migration guide: Laco 0.x → 1.0","\u002Fresources\u002Fmigration-0.x-to-1.0","3.resources\u002F2.migration-0.x-to-1.0",{"title":171,"path":172,"stem":173},"Laco vs hydra-zen","\u002Fresources\u002Flaco-vs-hydra-zen","3.resources\u002F3.laco-vs-hydra-zen",{"title":175,"path":176,"stem":177,"children":178},"API Reference","\u002Fapi","4.api\u002Findex",[179],{"title":175,"path":176,"stem":177},{"title":181,"path":182,"stem":183},"Lazy Configuration for Python","\u002F","index",[185,188,191,194,197,200,203],{"title":186,"path":187},"cli","\u002Fapi\u002Fcli",{"title":189,"path":190},"compat","\u002Fapi\u002Fcompat",{"title":192,"path":193},"handler","\u002Fapi\u002Fhandler",{"title":195,"path":196},"keys","\u002Fapi\u002Fkeys",{"title":198,"path":199},"language","\u002Fapi\u002Flanguage",{"title":201,"path":202},"ops","\u002Fapi\u002Fops",{"title":204,"path":205},"utils","\u002Fapi\u002Futils",{"id":207,"title":5,"body":208,"description":242,"extension":725,"meta":726,"navigation":350,"path":6,"seo":727,"stem":7,"__hash__":728},"content\u002F1.getting-started.md",{"type":209,"value":210,"toc":715},"minimark",[211,215,231,236,285,289,294,493,497,565,569,622,626,654,657,678,682,711],[212,213,5],"h1",{"id":214},"getting-started",[216,217,218],"blockquote",{},[219,220,221,225,226,230],"p",{},[222,223,224],"strong",{},"Prerequisites:"," Python 3.12+. PyTorch is optional, required only for\nexamples that import ",[227,228,229],"code",{},"torch.nn",".",[232,233,235],"h2",{"id":234},"install","Install",[237,238,243],"pre",{"className":239,"code":240,"language":241,"meta":242,"style":242},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","pip install laco\n# Optional: with wandb integration\npip install \"laco[wandb]\"\n","bash","",[227,244,245,261,268],{"__ignoreMap":242},[246,247,250,254,258],"span",{"class":248,"line":249},"line",1,[246,251,253],{"class":252},"sbgvK","pip",[246,255,257],{"class":256},"s_sjI"," install",[246,259,260],{"class":256}," laco\n",[246,262,264],{"class":248,"line":263},2,[246,265,267],{"class":266},"sutJx","# Optional: with wandb integration\n",[246,269,271,273,275,279,282],{"class":248,"line":270},3,[246,272,253],{"class":252},[246,274,257],{"class":256},[246,276,278],{"class":277},"sjJ54"," \"",[246,280,281],{"class":256},"laco[wandb]",[246,283,284],{"class":277},"\"\n",[232,286,288],{"id":287},"five-minute-example","Five-Minute Example",[290,291,293],"h3",{"id":292},"_1-write-a-config-file","1. Write a config file",[237,295,299],{"className":296,"code":297,"language":298,"meta":242,"style":242},"language-python shiki shiki-themes material-theme-lighter github-light github-dark","# configs\u002Fmlp.py\nimport laco.language as L\nimport torch.nn as nn\n\nmodel = L.call(nn.Sequential)(\n    L.call(nn.Linear)(in_features=784, out_features=256),\n    L.call(nn.ReLU)(),\n    L.call(nn.Linear)(in_features=256, out_features=10),\n)\n","python",[227,300,301,306,328,345,352,384,430,451,487],{"__ignoreMap":242},[246,302,303],{"class":248,"line":249},[246,304,305],{"class":266},"# configs\u002Fmlp.py\n",[246,307,308,312,316,319,322,325],{"class":248,"line":263},[246,309,311],{"class":310},"sVHd0","import",[246,313,315],{"class":314},"su5hD"," laco",[246,317,230],{"class":318},"sP7_E",[246,320,198],{"class":321},"skxfh",[246,323,324],{"class":310}," as",[246,326,327],{"class":314}," L\n",[246,329,330,332,335,337,340,342],{"class":248,"line":270},[246,331,311],{"class":310},[246,333,334],{"class":314}," torch",[246,336,230],{"class":318},[246,338,339],{"class":321},"nn",[246,341,324],{"class":310},[246,343,344],{"class":314}," nn\n",[246,346,348],{"class":248,"line":347},4,[246,349,351],{"emptyLinePlaceholder":350},true,"\n",[246,353,355,358,362,365,367,371,374,376,378,381],{"class":248,"line":354},5,[246,356,357],{"class":314},"model ",[246,359,361],{"class":360},"smGrS","=",[246,363,364],{"class":314}," L",[246,366,230],{"class":318},[246,368,370],{"class":369},"slqww","call",[246,372,373],{"class":318},"(",[246,375,339],{"class":369},[246,377,230],{"class":318},[246,379,380],{"class":321},"Sequential",[246,382,383],{"class":318},")(\n",[246,385,387,390,392,394,396,398,400,403,406,410,412,416,419,422,424,427],{"class":248,"line":386},6,[246,388,389],{"class":369},"    L",[246,391,230],{"class":318},[246,393,370],{"class":369},[246,395,373],{"class":318},[246,397,339],{"class":369},[246,399,230],{"class":318},[246,401,402],{"class":321},"Linear",[246,404,405],{"class":318},")(",[246,407,409],{"class":408},"s99_P","in_features",[246,411,361],{"class":360},[246,413,415],{"class":414},"srdBf","784",[246,417,418],{"class":318},",",[246,420,421],{"class":408}," out_features",[246,423,361],{"class":360},[246,425,426],{"class":414},"256",[246,428,429],{"class":318},"),\n",[246,431,433,435,437,439,441,443,445,448],{"class":248,"line":432},7,[246,434,389],{"class":369},[246,436,230],{"class":318},[246,438,370],{"class":369},[246,440,373],{"class":318},[246,442,339],{"class":369},[246,444,230],{"class":318},[246,446,447],{"class":321},"ReLU",[246,449,450],{"class":318},")(),\n",[246,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,485],{"class":248,"line":453},8,[246,455,389],{"class":369},[246,457,230],{"class":318},[246,459,370],{"class":369},[246,461,373],{"class":318},[246,463,339],{"class":369},[246,465,230],{"class":318},[246,467,402],{"class":321},[246,469,405],{"class":318},[246,471,409],{"class":408},[246,473,361],{"class":360},[246,475,426],{"class":414},[246,477,418],{"class":318},[246,479,421],{"class":408},[246,481,361],{"class":360},[246,483,484],{"class":414},"10",[246,486,429],{"class":318},[246,488,490],{"class":248,"line":489},9,[246,491,492],{"class":318},")\n",[290,494,496],{"id":495},"_2-load-and-inspect","2. Load and inspect",[237,498,500],{"className":296,"code":499,"language":298,"meta":242,"style":242},"import laco\n\ncfg = laco.load(\"configs\u002Fmlp.py\")\nprint(laco.dump(cfg))  # prints Hydra-compatible YAML\n",[227,501,502,508,512,538],{"__ignoreMap":242},[246,503,504,506],{"class":248,"line":249},[246,505,311],{"class":310},[246,507,260],{"class":314},[246,509,510],{"class":248,"line":263},[246,511,351],{"emptyLinePlaceholder":350},[246,513,514,517,519,521,523,526,528,531,534,536],{"class":248,"line":270},[246,515,516],{"class":314},"cfg ",[246,518,361],{"class":360},[246,520,315],{"class":314},[246,522,230],{"class":318},[246,524,525],{"class":369},"load",[246,527,373],{"class":318},[246,529,530],{"class":277},"\"",[246,532,533],{"class":256},"configs\u002Fmlp.py",[246,535,530],{"class":277},[246,537,492],{"class":318},[246,539,540,544,546,549,551,554,556,559,562],{"class":248,"line":347},[246,541,543],{"class":542},"sptTA","print",[246,545,373],{"class":318},[246,547,548],{"class":369},"laco",[246,550,230],{"class":318},[246,552,553],{"class":369},"dump",[246,555,373],{"class":318},[246,557,558],{"class":369},"cfg",[246,560,561],{"class":318},"))",[246,563,564],{"class":266},"  # prints Hydra-compatible YAML\n",[290,566,568],{"id":567},"_3-instantiate","3. Instantiate",[237,570,572],{"className":296,"code":571,"language":298,"meta":242,"style":242},"model = laco.instantiate(cfg.model)\n# model is now a real nn.Sequential\nprint(type(model))  # \u003Cclass 'torch.nn.modules.container.Sequential'>\n",[227,573,574,598,603],{"__ignoreMap":242},[246,575,576,578,580,582,584,587,589,591,593,596],{"class":248,"line":249},[246,577,357],{"class":314},[246,579,361],{"class":360},[246,581,315],{"class":314},[246,583,230],{"class":318},[246,585,586],{"class":369},"instantiate",[246,588,373],{"class":318},[246,590,558],{"class":369},[246,592,230],{"class":318},[246,594,595],{"class":321},"model",[246,597,492],{"class":318},[246,599,600],{"class":248,"line":263},[246,601,602],{"class":266},"# model is now a real nn.Sequential\n",[246,604,605,607,609,613,615,617,619],{"class":248,"line":270},[246,606,543],{"class":542},[246,608,373],{"class":318},[246,610,612],{"class":611},"sZMiF","type",[246,614,373],{"class":318},[246,616,595],{"class":369},[246,618,561],{"class":318},[246,620,621],{"class":266},"  # \u003Cclass 'torch.nn.modules.container.Sequential'>\n",[290,623,625],{"id":624},"_4-apply-overrides","4. Apply overrides",[237,627,629],{"className":296,"code":628,"language":298,"meta":242,"style":242},"cfg = laco.load(\"configs\u002Fmlp.py?model.0.out_features=512\")\n",[227,630,631],{"__ignoreMap":242},[246,632,633,635,637,639,641,643,645,647,650,652],{"class":248,"line":249},[246,634,516],{"class":314},[246,636,361],{"class":360},[246,638,315],{"class":314},[246,640,230],{"class":318},[246,642,525],{"class":369},[246,644,373],{"class":318},[246,646,530],{"class":277},[246,648,649],{"class":256},"configs\u002Fmlp.py?model.0.out_features=512",[246,651,530],{"class":277},[246,653,492],{"class":318},[219,655,656],{},"Or from the CLI:",[237,658,660],{"className":239,"code":659,"language":241,"meta":242,"style":242},"laco compose configs\u002Fmlp.py model.0.out_features=512\n",[227,661,662],{"__ignoreMap":242},[246,663,664,666,669,672,675],{"class":248,"line":249},[246,665,548],{"class":252},[246,667,668],{"class":256}," compose",[246,670,671],{"class":256}," configs\u002Fmlp.py",[246,673,674],{"class":256}," model.0.out_features=",[246,676,677],{"class":414},"512\n",[232,679,681],{"id":680},"next-steps","Next Steps",[683,684,685,693,699,705],"ul",{},[686,687,688,689],"li",{},"Work through the tutorials: ",[690,691,692],"a",{"href":17},"notebooks\u002Ftutorials\u002F",[686,694,695,696],{},"Understand the ",[690,697,698],{"href":82},"lie-typing contract",[686,700,701,702],{},"See full examples in ",[690,703,704],{"href":141},"examples\u002Ffoundations.md",[686,706,707,708],{},"Browse the ",[690,709,710],{"href":176},"API reference",[712,713,714],"style",{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sutJx, html code.shiki .sutJx{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sVHd0, html code.shiki .sVHd0{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .skxfh, html code.shiki .skxfh{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .smGrS, html code.shiki .smGrS{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .slqww, html code.shiki .slqww{--shiki-light:#6182B8;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s99_P, html code.shiki .s99_P{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#E36209;--shiki-default-font-style:inherit;--shiki-dark:#FFAB70;--shiki-dark-font-style:inherit}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sptTA, html code.shiki .sptTA{--shiki-light:#6182B8;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZMiF, html code.shiki .sZMiF{--shiki-light:#E2931D;--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":242,"searchDepth":270,"depth":270,"links":716},[717,718,724],{"id":234,"depth":263,"text":235},{"id":287,"depth":263,"text":288,"children":719},[720,721,722,723],{"id":292,"depth":270,"text":293},{"id":495,"depth":270,"text":496},{"id":567,"depth":270,"text":568},{"id":624,"depth":270,"text":625},{"id":680,"depth":263,"text":681},"md",{},{"title":5,"description":242},"LUObQYM_UOTJbymXNyGwU0gVeOMRHNzAfXvX8eTz9FI",{},1785687294803]