pypa-hatch/1.5/config/environment/advanced/index.html

234 lines
127 KiB
HTML

<!DOCTYPE html><html class=no-js lang=en> <head><meta charset=utf-8><meta content="width=device-width,initial-scale=1" name=viewport><meta content="Modern, extensible Python project management" name=description><meta content="Ofek Lev" name=author><link href=https://hatch.pypa.io/latest/1.5/config/environment/advanced/ rel=canonical><link href=../../../assets/images/logo.svg rel=icon><meta content="mkdocs-1.4.0, mkdocs-material-8.5.6+insiders-4.25.2" name=generator><title>Advanced - Hatch</title><link href=../../../assets/stylesheets/main.fa1d38d9.min.css rel=stylesheet><link href=../../../assets/stylesheets/palette.cbb835fc.min.css rel=stylesheet><link crossorigin href=https://fonts.gstatic.com rel=preconnect><link href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback" rel=stylesheet><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link href=../../../assets/_mkdocstrings.css rel=stylesheet><link href=../../../assets/css/custom.css rel=stylesheet><link href=https://cdn.jsdelivr.net/gh/tonsky/FiraCode@5.2/distr/fira_code.css rel=stylesheet><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script><link href=../../../assets/stylesheets/glightbox.min.css rel=stylesheet><style>
html.glightbox-open { overflow: initial; height: 100%; }
.gdesc-inner { font-size: 0.75rem; }
.gslide-title { margin-top: 0px; user-select: text; }
.gslide-desc { color: #666; user-select: text; }
.gslide-image img { background: white; }
.gscrollbar-fixer { padding-right: 15px; }
</style><script src=../../../assets/javascripts/glightbox.min.js></script></head> <body data-md-color-accent=indigo data-md-color-primary=indigo data-md-color-scheme=slate dir=ltr> <input autocomplete=off class=md-toggle data-md-toggle=drawer id=__drawer type=checkbox> <input autocomplete=off class=md-toggle data-md-toggle=search id=__search type=checkbox> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a class=md-skip href=#advanced-environment-configuration> Skip to content </a> </div> <div data-md-component=announce> </div> <div data-md-component=outdated hidden> </div> <header class="md-header md-header--lifted" data-md-component=header> <nav aria-label=Header class="md-header__inner md-grid"> <a aria-label=Hatch class="md-header__button md-logo" data-md-component=logo href=../../.. title=Hatch> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M19.5 14.5A7.5 7.5 0 0 1 12 22a7.5 7.5 0 0 1-7.5-7.5C4.5 10.36 7.86 2 12 2c4.14 0 7.5 8.36 7.5 12.5Z"></path></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"></path></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> Hatch </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Advanced </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input aria-label="Switch to light mode" class=md-option data-md-color-accent=indigo data-md-color-media="(prefers-color-scheme: dark)" data-md-color-primary=indigo data-md-color-scheme=slate id=__palette_0 name=__palette type=radio> <label class="md-header__button md-icon" for=__palette_1 hidden title="Switch to light mode"> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="m17.75 4.09-2.53 1.94.91 3.06-2.63-1.81-2.63 1.81.91-3.06-2.53-1.94L12.44 4l1.06-3 1.06 3 3.19.09m3.5 6.91-1.64 1.25.59 1.98-1.7-1.17-1.7 1.17.59-1.98L15.75 11l2.06-.05L18.5 9l.69 1.95 2.06.05m-2.28 4.95c.83-.08 1.72 1.1 1.19 1.85-.32.45-.66.87-1.08 1.27C15.17 23 8.84 23 4.94 19.07c-3.91-3.9-3.91-10.24 0-14.14.4-.4.82-.76 1.27-1.08.75-.53 1.93.36 1.85 1.19-.27 2.86.69 5.83 2.89 8.02a9.96 9.96 0 0 0 8.02 2.89m-1.64 2.02a12.08 12.08 0 0 1-7.8-3.47c-2.17-2.19-3.33-5-3.49-7.82-2.81 3.14-2.7 7.96.31 10.98 3.02 3.01 7.84 3.12 10.98.31Z"></path></svg> </label> <input aria-label="Switch to dark mode" class=md-option data-md-color-accent=indigo data-md-color-media="(prefers-color-scheme: light)" data-md-color-primary=indigo data-md-color-scheme=default id=__palette_1 name=__palette type=radio> <label class="md-header__button md-icon" for=__palette_0 hidden title="Switch to dark mode"> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M12 7a5 5 0 0 1 5 5 5 5 0 0 1-5 5 5 5 0 0 1-5-5 5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3m0-7 2.39 3.42C13.65 5.15 12.84 5 12 5c-.84 0-1.65.15-2.39.42L12 2M3.34 7l4.16-.35A7.2 7.2 0 0 0 5.94 8.5c-.44.74-.69 1.5-.83 2.29L3.34 7m.02 10 1.76-3.77a7.131 7.131 0 0 0 2.38 4.14L3.36 17M20.65 7l-1.77 3.79a7.023 7.023 0 0 0-2.38-4.15l4.15.36m-.01 10-4.14.36c.59-.51 1.12-1.14 1.54-1.86.42-.73.69-1.5.83-2.29L20.64 17M12 22l-2.41-3.44c.74.27 1.55.44 2.41.44.82 0 1.63-.17 2.37-.44L12 22Z"></path></svg> </label> </form> <script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input aria-label=Search autocapitalize=off autocomplete=off autocorrect=off class=md-search__input data-md-component=search-query name=query placeholder=Search required spellcheck=false type=text> <label class="md-search__icon md-icon" for=__search> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"></path></svg> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg> </label> <nav aria-label=Search class=md-search__options> <button aria-label=Clear class="md-search__icon md-icon" tabindex=-1 title=Clear type=reset> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"></path></svg> </button> </nav> </form> <div class=md-search__output> <div class=md-search__scrollwrap data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a class=md-source data-md-component=source href=https://github.com/pypa/hatch title="Go to repository"> <div class="md-source__icon md-icon"> <svg viewbox="0 0 480 512" xmlns=http://www.w3.org/2000/svg><!-- Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"></path></svg> </div> <div class=md-source__repository> pypa/hatch </div> </a> </div> </nav> <nav aria-label=Tabs class=md-tabs data-md-component=tabs> <div class="md-tabs__inner md-grid"> <ul class=md-tabs__list> <li class=md-tabs__item> <a class=md-tabs__link href=../../..> Home </a> </li> <li class=md-tabs__item> <a href=../../metadata/ class="md-tabs__link md-tabs__link--active"> Configuration </a> </li> <li class=md-tabs__item> <a href=../../../cli/about/ class=md-tabs__link> CLI </a> </li> <li class=md-tabs__item> <a href=../../../plugins/about/ class=md-tabs__link> Plugins </a> </li> <li class=md-tabs__item> <a href=../../../how-to/environment/package-indices/ class=md-tabs__link> How-to </a> </li> <li class=md-tabs__item> <a href=../../../meta/faq/ class=md-tabs__link> Meta </a> </li> <li class=md-tabs__item> <a href=../../../blog/ class=md-tabs__link> Blog </a> </li> </ul> </div> </nav> </header> <div class=md-container data-md-component=container> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav aria-label=Navigation class="md-nav md-nav--primary md-nav--lifted" data-md-level=0> <label class=md-nav__title for=__drawer> <a aria-label=Hatch class="md-nav__button md-logo" data-md-component=logo href=../../.. title=Hatch> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M19.5 14.5A7.5 7.5 0 0 1 12 22a7.5 7.5 0 0 1-7.5-7.5C4.5 10.36 7.86 2 12 2c4.14 0 7.5 8.36 7.5 12.5Z"></path></svg> </a> Hatch </label> <div class=md-nav__source> <a class=md-source data-md-component=source href=https://github.com/pypa/hatch title="Go to repository"> <div class="md-source__icon md-icon"> <svg viewbox="0 0 480 512" xmlns=http://www.w3.org/2000/svg><!-- Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"></path></svg> </div> <div class=md-source__repository> pypa/hatch </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_1 id=__nav_1 type=checkbox> <label class=md-nav__link for=__nav_1> <span class=md-ellipsis> Home </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Home class=md-nav data-md-level=1> <label class=md-nav__title for=__nav_1> <span class="md-nav__icon md-icon"></span> Home </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a class=md-nav__link href=../../..> <span class=md-ellipsis> About </span> </a> </li> <li class=md-nav__item> <a href=../../../install/ class=md-nav__link> <span class=md-ellipsis> Installation </span> </a> </li> <li class=md-nav__item> <a href=../../../intro/ class=md-nav__link> <span class=md-ellipsis> Introduction </span> </a> </li> <li class=md-nav__item> <a href=../../../environment/ class=md-nav__link> <span class=md-ellipsis> Environments </span> </a> </li> <li class=md-nav__item> <a href=../../../version/ class=md-nav__link> <span class=md-ellipsis> Versioning </span> </a> </li> <li class=md-nav__item> <a href=../../../build/ class=md-nav__link> <span class=md-ellipsis> Builds </span> </a> </li> <li class=md-nav__item> <a href=../../../publish/ class=md-nav__link> <span class=md-ellipsis> Publishing </span> </a> </li> <li class=md-nav__item> <a href=../../../next-steps/ class=md-nav__link> <span class=md-ellipsis> Next steps </span> </a> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_1_9 id=__nav_1_9 type=checkbox> <label class=md-nav__link for=__nav_1_9> <span class=md-ellipsis> Status </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Status class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_1_9> <span class="md-nav__icon md-icon"></span> Status </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../history/ class=md-nav__link> <span class=md-ellipsis> History </span> </a> </li> <li class=md-nav__item> <a href=../../../users/ class=md-nav__link> <span class=md-ellipsis> Users </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle" data-md-toggle=__nav_2 id=__nav_2 type=checkbox> <label class=md-nav__link for=__nav_2> <span class=md-ellipsis> Configuration </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Configuration class=md-nav data-md-level=1> <label class=md-nav__title for=__nav_2> <span class="md-nav__icon md-icon"></span> Configuration </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../metadata/ class=md-nav__link> <span class=md-ellipsis> Metadata </span> </a> </li> <li class=md-nav__item> <a href=../../dependency/ class=md-nav__link> <span class=md-ellipsis> Dependencies </span> </a> </li> <li class=md-nav__item> <a href=../../build/ class=md-nav__link> <span class=md-ellipsis> Build </span> </a> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle" data-md-toggle=__nav_2_4 id=__nav_2_4 type=checkbox> <label class=md-nav__link for=__nav_2_4> <span class=md-ellipsis> Environments </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Environments class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_2_4> <span class="md-nav__icon md-icon"></span> Environments </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../overview/ class=md-nav__link> <span class=md-ellipsis> Overview </span> </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" data-md-toggle=toc id=__toc type=checkbox> <label class="md-nav__link md-nav__link--active" for=__toc> <span class=md-ellipsis> Advanced </span> <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> <span class=md-ellipsis> Advanced </span> </a> <nav aria-label="Table of contents" class="md-nav md-nav--secondary"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a class=md-nav__link href=#context-formatting> <span class=md-ellipsis> Context formatting </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#matrix> <span class=md-ellipsis> Matrix </span> </a> <nav aria-label=Matrix class=md-nav> <ul class=md-nav__list> <li class=md-nav__item> <a class=md-nav__link href=#naming> <span class=md-ellipsis> Naming </span> </a> <nav aria-label=Naming class=md-nav> <ul class=md-nav__list> <li class=md-nav__item> <a class=md-nav__link href=#python-variables> <span class=md-ellipsis> Python variables </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#name-formatting> <span class=md-ellipsis> Name formatting </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#default-environment> <span class=md-ellipsis> Default environment </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a class=md-nav__link href=#selection> <span class=md-ellipsis> Selection </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a class=md-nav__link href=#option-overrides> <span class=md-ellipsis> Option overrides </span> </a> <nav aria-label="Option overrides" class=md-nav> <ul class=md-nav__list> <li class=md-nav__item> <a class=md-nav__link href=#platform-overrides> <span class=md-ellipsis> Platform overrides </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#environment-variable-overrides> <span class=md-ellipsis> Environment variable overrides </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#matrix-variable-overrides> <span class=md-ellipsis> Matrix variable overrides </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#name-overrides> <span class=md-ellipsis> Name overrides </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#types> <span class=md-ellipsis> Types </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#overwriting> <span class=md-ellipsis> Overwriting </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#conditions> <span class=md-ellipsis> Conditions </span> </a> <nav aria-label=Conditions class=md-nav> <ul class=md-nav__list> <li class=md-nav__item> <a class=md-nav__link href=#allowed-values> <span class=md-ellipsis> Allowed values </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#specific-platforms> <span class=md-ellipsis> Specific platforms </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#required-environment-variables> <span class=md-ellipsis> Required environment variables </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../context/ class=md-nav__link> <span class=md-ellipsis> Context formatting </span> </a> </li> <li class=md-nav__item> <a href=../../project-templates/ class=md-nav__link> <span class=md-ellipsis> Project templates </span> </a> </li> <li class=md-nav__item> <a href=../../hatch/ class=md-nav__link> <span class=md-ellipsis> Hatch </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_3 id=__nav_3 type=checkbox> <label class=md-nav__link for=__nav_3> <span class=md-ellipsis> CLI </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=CLI class=md-nav data-md-level=1> <label class=md-nav__title for=__nav_3> <span class="md-nav__icon md-icon"></span> CLI </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../cli/about/ class=md-nav__link> <span class=md-ellipsis> About </span> </a> </li> <li class=md-nav__item> <a href=../../../cli/reference/ class=md-nav__link> <span class=md-ellipsis> Reference </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_4 id=__nav_4 type=checkbox> <label class=md-nav__link for=__nav_4> <span class=md-ellipsis> Plugins </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Plugins class=md-nav data-md-level=1> <label class=md-nav__title for=__nav_4> <span class="md-nav__icon md-icon"></span> Plugins </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../plugins/about/ class=md-nav__link> <span class=md-ellipsis> About </span> </a> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_4_2 id=__nav_4_2 type=checkbox> <label class=md-nav__link for=__nav_4_2> <span class=md-ellipsis> Builder </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Builder class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_4_2> <span class="md-nav__icon md-icon"></span> Builder </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../plugins/builder/reference/ class=md-nav__link> <span class=md-ellipsis> Reference </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/builder/wheel/ class=md-nav__link> <span class=md-ellipsis> Wheel </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/builder/sdist/ class=md-nav__link> <span class=md-ellipsis> Source distribution </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/builder/custom/ class=md-nav__link> <span class=md-ellipsis> Custom </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_4_3 id=__nav_4_3 type=checkbox> <label class=md-nav__link for=__nav_4_3> <span class=md-ellipsis> Build hook </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label="Build hook" class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_4_3> <span class="md-nav__icon md-icon"></span> Build hook </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../plugins/build-hook/reference/ class=md-nav__link> <span class=md-ellipsis> Reference </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/build-hook/version/ class=md-nav__link> <span class=md-ellipsis> Version </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/build-hook/custom/ class=md-nav__link> <span class=md-ellipsis> Custom </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_4_4 id=__nav_4_4 type=checkbox> <label class=md-nav__link for=__nav_4_4> <span class=md-ellipsis> Metadata hook </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label="Metadata hook" class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_4_4> <span class="md-nav__icon md-icon"></span> Metadata hook </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../plugins/metadata-hook/reference/ class=md-nav__link> <span class=md-ellipsis> Reference </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/metadata-hook/custom/ class=md-nav__link> <span class=md-ellipsis> Custom </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_4_5 id=__nav_4_5 type=checkbox> <label class=md-nav__link for=__nav_4_5> <span class=md-ellipsis> Environment </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Environment class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_4_5> <span class="md-nav__icon md-icon"></span> Environment </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../plugins/environment/reference/ class=md-nav__link> <span class=md-ellipsis> Reference </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/environment/virtual/ class=md-nav__link> <span class=md-ellipsis> Virtual </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_4_6 id=__nav_4_6 type=checkbox> <label class=md-nav__link for=__nav_4_6> <span class=md-ellipsis> Environment collector </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label="Environment collector" class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_4_6> <span class="md-nav__icon md-icon"></span> Environment collector </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../plugins/environment-collector/reference/ class=md-nav__link> <span class=md-ellipsis> Reference </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/environment-collector/default/ class=md-nav__link> <span class=md-ellipsis> Default </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_4_7 id=__nav_4_7 type=checkbox> <label class=md-nav__link for=__nav_4_7> <span class=md-ellipsis> Publisher </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Publisher class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_4_7> <span class="md-nav__icon md-icon"></span> Publisher </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../plugins/publisher/reference/ class=md-nav__link> <span class=md-ellipsis> Reference </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/publisher/package-index/ class=md-nav__link> <span class=md-ellipsis> Index </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_4_8 id=__nav_4_8 type=checkbox> <label class=md-nav__link for=__nav_4_8> <span class=md-ellipsis> Version source </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label="Version source" class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_4_8> <span class="md-nav__icon md-icon"></span> Version source </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../plugins/version-source/reference/ class=md-nav__link> <span class=md-ellipsis> Reference </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/version-source/regex/ class=md-nav__link> <span class=md-ellipsis> Regex </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/version-source/code/ class=md-nav__link> <span class=md-ellipsis> Code </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/version-source/env/ class=md-nav__link> <span class=md-ellipsis> Environment </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_4_9 id=__nav_4_9 type=checkbox> <label class=md-nav__link for=__nav_4_9> <span class=md-ellipsis> Version scheme </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label="Version scheme" class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_4_9> <span class="md-nav__icon md-icon"></span> Version scheme </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../plugins/version-scheme/reference/ class=md-nav__link> <span class=md-ellipsis> Reference </span> </a> </li> <li class=md-nav__item> <a href=../../../plugins/version-scheme/standard/ class=md-nav__link> <span class=md-ellipsis> Standard </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../../../plugins/utilities/ class=md-nav__link> <span class=md-ellipsis> Utilities </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_5 id=__nav_5 type=checkbox> <label class=md-nav__link for=__nav_5> <span class=md-ellipsis> How-to </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=How-to class=md-nav data-md-level=1> <label class=md-nav__title for=__nav_5> <span class="md-nav__icon md-icon"></span> How-to </label> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_5_1 id=__nav_5_1 type=checkbox> <label class=md-nav__link for=__nav_5_1> <span class=md-ellipsis> Environments </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Environments class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_5_1> <span class="md-nav__icon md-icon"></span> Environments </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../how-to/environment/package-indices/ class=md-nav__link> <span class=md-ellipsis> Package indices </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_5_2 id=__nav_5_2 type=checkbox> <label class=md-nav__link for=__nav_5_2> <span class=md-ellipsis> Plugins </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Plugins class=md-nav data-md-level=2> <label class=md-nav__title for=__nav_5_2> <span class="md-nav__icon md-icon"></span> Plugins </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../how-to/plugins/testing-builds/ class=md-nav__link> <span class=md-ellipsis> Testing builds </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_6 id=__nav_6 type=checkbox> <label class=md-nav__link for=__nav_6> <span class=md-ellipsis> Meta </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Meta class=md-nav data-md-level=1> <label class=md-nav__title for=__nav_6> <span class="md-nav__icon md-icon"></span> Meta </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../meta/faq/ class=md-nav__link> <span class=md-ellipsis> FAQ </span> </a> </li> <li class=md-nav__item> <a href=../../../meta/authors/ class=md-nav__link> <span class=md-ellipsis> Authors </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input checked class="md-nav__toggle md-toggle md-toggle--indeterminate" data-md-toggle=__nav_7 id=__nav_7 type=checkbox> <label class=md-nav__link for=__nav_7> <span class=md-ellipsis> Blog </span> <span class="md-nav__icon md-icon"></span> </label> <nav aria-label=Blog class=md-nav data-md-level=1> <label class=md-nav__title for=__nav_7> <span class="md-nav__icon md-icon"></span> Blog </label> <ul class=md-nav__list data-md-scrollfix> <li class=md-nav__item> <a href=../../../blog/ class=md-nav__link> <span class=md-ellipsis> Blog </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav aria-label="Table of contents" class="md-nav md-nav--secondary"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a class=md-nav__link href=#context-formatting> <span class=md-ellipsis> Context formatting </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#matrix> <span class=md-ellipsis> Matrix </span> </a> <nav aria-label=Matrix class=md-nav> <ul class=md-nav__list> <li class=md-nav__item> <a class=md-nav__link href=#naming> <span class=md-ellipsis> Naming </span> </a> <nav aria-label=Naming class=md-nav> <ul class=md-nav__list> <li class=md-nav__item> <a class=md-nav__link href=#python-variables> <span class=md-ellipsis> Python variables </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#name-formatting> <span class=md-ellipsis> Name formatting </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#default-environment> <span class=md-ellipsis> Default environment </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a class=md-nav__link href=#selection> <span class=md-ellipsis> Selection </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a class=md-nav__link href=#option-overrides> <span class=md-ellipsis> Option overrides </span> </a> <nav aria-label="Option overrides" class=md-nav> <ul class=md-nav__list> <li class=md-nav__item> <a class=md-nav__link href=#platform-overrides> <span class=md-ellipsis> Platform overrides </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#environment-variable-overrides> <span class=md-ellipsis> Environment variable overrides </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#matrix-variable-overrides> <span class=md-ellipsis> Matrix variable overrides </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#name-overrides> <span class=md-ellipsis> Name overrides </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#types> <span class=md-ellipsis> Types </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#overwriting> <span class=md-ellipsis> Overwriting </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#conditions> <span class=md-ellipsis> Conditions </span> </a> <nav aria-label=Conditions class=md-nav> <ul class=md-nav__list> <li class=md-nav__item> <a class=md-nav__link href=#allowed-values> <span class=md-ellipsis> Allowed values </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#specific-platforms> <span class=md-ellipsis> Specific platforms </span> </a> </li> <li class=md-nav__item> <a class=md-nav__link href=#required-environment-variables> <span class=md-ellipsis> Required environment variables </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a class="md-content__button md-icon" href=https://github.com/pypa/hatch/blob/master/docs/config/environment/advanced.md title="Edit this page"> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25Z"></path></svg> </a> <h1 id=advanced-environment-configuration>Advanced environment configuration<a class=headerlink href=#advanced-environment-configuration title="Permanent link"></a></h1> <hr> <h2 id=context-formatting>Context formatting<a class=headerlink href=#context-formatting title="Permanent link"></a></h2> <p>All environments support the following extra <a href=../../context/ >context formatting</a> fields:</p> <table> <thead> <tr> <th>Field</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><code>env_name</code></td> <td>The name of the environment</td> </tr> <tr> <td><code>env_type</code></td> <td>The <a href=../overview/#type>type</a> of environment</td> </tr> <tr> <td><code>matrix</code></td> <td>Its modifier selects the value of that matrix variable. If the environment is not part of a matrix or was not generated with the variable, you must specify a default value as an additional modifier e.g. <code>{matrix:version:v1.0.0}</code>.</td> </tr> <tr> <td><code>verbosity</code></td> <td>The integer verbosity value of Hatch. A <code>flag</code> modifier is supported that will render the value as a CLI flag e.g. <code>-2</code> becomes <code>-qq</code>, <code>1</code> becomes <code>-v</code>, and <code>0</code> becomes an empty string. An additional flag integer modifier may be used to adjust the verbosity level. For example, if you wanted to make a command quiet by default, you could use <code>{verbosity:flag:-1}</code> within the command.</td> </tr> <tr> <td><code>args</code></td> <td>For <a href=../../../environment/#command-execution>executed commands</a> only, any extra command line arguments with an optional default modifier if none were provided</td> </tr> </tbody> </table> <h2 id=matrix>Matrix<a class=headerlink href=#matrix title="Permanent link"></a></h2> <p>Environments can define a series of matrices with the <code>matrix</code> option:</p> <div class="tabbed-set tabbed-alternate" data-tabs=1:2><input checked=checked id=__tabbed_1_1 name=__tabbed_1 type=radio><input id=__tabbed_1_2 name=__tabbed_1 type=radio><div class=tabbed-labels><label for=__tabbed_1_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_1_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test]</span><span class=w></span>
<span class=n>dependencies</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=s>"pytest"</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[[tool.hatch.envs.test.matrix]]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"27"</span><span class=p>,</span><span class=w> </span><span class=s>"38"</span><span class=p>]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>,</span><span class=w> </span><span class=s>"3.14"</span><span class=p>]</span><span class=w></span>
<span class=k>[[tool.hatch.envs.test.matrix]]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"38"</span><span class=p>,</span><span class=w> </span><span class=s>"39"</span><span class=p>]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"9000"</span><span class=p>]</span><span class=w></span>
<span class=n>feature</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"foo"</span><span class=p>,</span><span class=w> </span><span class=s>"bar"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test]</span><span class=w></span>
<span class=n>dependencies</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=s>"pytest"</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[[envs.test.matrix]]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"27"</span><span class=p>,</span><span class=w> </span><span class=s>"38"</span><span class=p>]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>,</span><span class=w> </span><span class=s>"3.14"</span><span class=p>]</span><span class=w></span>
<span class=k>[[envs.test.matrix]]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"38"</span><span class=p>,</span><span class=w> </span><span class=s>"39"</span><span class=p>]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"9000"</span><span class=p>]</span><span class=w></span>
<span class=n>feature</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"foo"</span><span class=p>,</span><span class=w> </span><span class=s>"bar"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>Doing so will result in the product of each variable combination being its own environment.</p> <h3 id=naming>Naming<a class=headerlink href=#naming title="Permanent link"></a></h3> <p>The name of the generated environments will be the variable values of each combination separated by hyphens, altogether prefixed by <code>&lt;ENV_NAME&gt;.</code>. For example, the following configuration:</p> <div class="tabbed-set tabbed-alternate" data-tabs=2:2><input checked=checked id=__tabbed_2_1 name=__tabbed_2 type=radio><input id=__tabbed_2_2 name=__tabbed_2 type=radio><div class=tabbed-labels><label for=__tabbed_2_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_2_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[[tool.hatch.envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>]</span><span class=w></span>
<span class=n>feature</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"foo"</span><span class=p>,</span><span class=w> </span><span class=s>"bar"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[[envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>]</span><span class=w></span>
<span class=n>feature</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"foo"</span><span class=p>,</span><span class=w> </span><span class=s>"bar"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>would indicate the following unique environments:</p> <div class=highlight><pre><span></span><code>test.42-foo
test.42-bar
</code></pre></div> <p>The exceptions to this format are described below.</p> <h4 id=python-variables>Python variables<a class=headerlink href=#python-variables title="Permanent link"></a></h4> <p>If the variables <code>py</code> or <code>python</code> are specified, then they will rank first in the product result and will be prefixed by <code>py</code> if the value is not. For example, the following configuration:</p> <div class="tabbed-set tabbed-alternate" data-tabs=3:2><input checked=checked id=__tabbed_3_1 name=__tabbed_3 type=radio><input id=__tabbed_3_2 name=__tabbed_3 type=radio><div class=tabbed-labels><label for=__tabbed_3_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_3_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[[tool.hatch.envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"39"</span><span class=p>,</span><span class=w> </span><span class=s>"pypy3"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[[envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"39"</span><span class=p>,</span><span class=w> </span><span class=s>"pypy3"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>would generate the following environments:</p> <div class=highlight><pre><span></span><code>test.py39-42
test.pypy3-42
</code></pre></div> <div class="admonition note"> <p class=admonition-title>Note</p> <p>The value of this variable sets the <a href=../overview/#python-version>Python version</a>.</p> </div> <h4 id=name-formatting>Name formatting<a class=headerlink href=#name-formatting title="Permanent link"></a></h4> <p>You can set the <code>matrix-name-format</code> option to modify how each variable part is formatted which recognizes the placeholders <code>{variable}</code> and <code>{value}</code>. For example, the following configuration:</p> <div class="tabbed-set tabbed-alternate" data-tabs=4:2><input checked=checked id=__tabbed_4_1 name=__tabbed_4 type=radio><input id=__tabbed_4_2 name=__tabbed_4 type=radio><div class=tabbed-labels><label for=__tabbed_4_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_4_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test]</span><span class=w></span>
<span class=n>matrix-name-format</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"{variable}_{value}"</span><span class=w></span>
<span class=k>[[tool.hatch.envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>]</span><span class=w></span>
<span class=n>feature</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"foo"</span><span class=p>,</span><span class=w> </span><span class=s>"bar"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test]</span><span class=w></span>
<span class=n>matrix-name-format</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"{variable}_{value}"</span><span class=w></span>
<span class=k>[[envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>]</span><span class=w></span>
<span class=n>feature</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"foo"</span><span class=p>,</span><span class=w> </span><span class=s>"bar"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>would produce the following environments:</p> <div class=highlight><pre><span></span><code>test.version_42-feature_foo
test.version_42-feature_bar
</code></pre></div> <p>By default this option is set to <code>{value}</code>.</p> <h4 id=default-environment>Default environment<a class=headerlink href=#default-environment title="Permanent link"></a></h4> <p>If the <code>default</code> environment defines matrices, then the generated names will not be prefixed by the environment name. This can be useful for projects that only need a single series of matrices without any standalone environments.</p> <h3 id=selection>Selection<a class=headerlink href=#selection title="Permanent link"></a></h3> <p>Rather than <a href=../../../environment/#selection>selecting</a> a single generated environment, you can select the root environment to target all of them. For example, if you have the following configuration:</p> <div class="tabbed-set tabbed-alternate" data-tabs=5:2><input checked=checked id=__tabbed_5_1 name=__tabbed_5 type=radio><input id=__tabbed_5_2 name=__tabbed_5 type=radio><div class=tabbed-labels><label for=__tabbed_5_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_5_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test]</span><span class=w></span>
<span class=n>dependencies</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=s>"coverage[toml]"</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>"pytest"</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>"pytest-cov"</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[tool.hatch.envs.test.scripts]</span><span class=w></span>
<span class=n>cov</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>'pytest --cov-report=term-missing --cov-config=pyproject.toml --cov=pkg --cov=tests'</span><span class=w></span>
<span class=k>[[tool.hatch.envs.test.matrix]]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"27"</span><span class=p>,</span><span class=w> </span><span class=s>"38"</span><span class=p>]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>,</span><span class=w> </span><span class=s>"3.14"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test]</span><span class=w></span>
<span class=n>dependencies</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=s>"coverage[toml]"</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>"pytest"</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>"pytest-cov"</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[envs.test.scripts]</span><span class=w></span>
<span class=n>cov</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>'pytest --cov-report=term-missing --cov-config=pyproject.toml --cov=pkg --cov=tests'</span><span class=w></span>
<span class=k>[[envs.test.matrix]]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"27"</span><span class=p>,</span><span class=w> </span><span class=s>"38"</span><span class=p>]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>,</span><span class=w> </span><span class=s>"3.14"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>you could then run your tests consecutively in all 4 environments with:</p> <div class=highlight><pre><span></span><code>hatch run test:cov
</code></pre></div> <h2 id=option-overrides>Option overrides<a class=headerlink href=#option-overrides title="Permanent link"></a></h2> <p>You can modify options based on the conditions of different sources like <a href=#matrix-variable-overrides>matrix variables</a> with the <code>overrides</code> table, using <a href=https://toml.io/en/v1.0.0#table>dotted key</a> syntax for each declaration:</p> <div class="tabbed-set tabbed-alternate" data-tabs=6:2><input checked=checked id=__tabbed_6_1 name=__tabbed_6 type=radio><input id=__tabbed_6_2 name=__tabbed_6 type=radio><div class=tabbed-labels><label for=__tabbed_6_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_6_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.&lt;ENV_NAME&gt;.overrides]</span><span class=w></span>
<span class=err>&lt;</span><span class=n>SOURCE</span><span class=err>&gt;</span><span class=p>.</span><span class=err>&lt;</span><span class=n>CONDITION</span><span class=err>&gt;</span><span class=p>.</span><span class=err>&lt;</span><span class=n>OPTION</span><span class=err>&gt;</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=err>&lt;</span><span class=n>VALUE</span><span class=err>&gt;</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.&lt;ENV_NAME&gt;.overrides]</span><span class=w></span>
<span class=err>&lt;</span><span class=n>SOURCE</span><span class=err>&gt;</span><span class=p>.</span><span class=err>&lt;</span><span class=n>CONDITION</span><span class=err>&gt;</span><span class=p>.</span><span class=err>&lt;</span><span class=n>OPTION</span><span class=err>&gt;</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=err>&lt;</span><span class=n>VALUE</span><span class=err>&gt;</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>The <a href=#types>type</a> of the selected option determines the types of values.</p> <h3 id=platform-overrides>Platform overrides<a class=headerlink href=#platform-overrides title="Permanent link"></a></h3> <p>Options can be modified based on the current platform using the <code>platform</code> source.</p> <div class="tabbed-set tabbed-alternate" data-tabs=7:2><input checked=checked id=__tabbed_7_1 name=__tabbed_7 type=radio><input id=__tabbed_7_2 name=__tabbed_7 type=radio><div class=tabbed-labels><label for=__tabbed_7_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_7_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test.overrides]</span><span class=w></span>
<span class=n>platform</span><span class=p>.</span><span class=n>windows</span><span class=p>.</span><span class=n>scripts</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=s>'run=pytest -m "not io_uring"'</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test.overrides]</span><span class=w></span>
<span class=n>platform</span><span class=p>.</span><span class=n>windows</span><span class=p>.</span><span class=n>scripts</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=s>'run=pytest -m "not io_uring"'</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>The following platforms are supported:</p> <ul> <li><code>linux</code></li> <li><code>windows</code></li> <li><code>macos</code></li> </ul> <h3 id=environment-variable-overrides>Environment variable overrides<a class=headerlink href=#environment-variable-overrides title="Permanent link"></a></h3> <p>Environment variables can modify options using the <code>env</code> source.</p> <div class="tabbed-set tabbed-alternate" data-tabs=8:2><input checked=checked id=__tabbed_8_1 name=__tabbed_8 type=radio><input id=__tabbed_8_2 name=__tabbed_8 type=radio><div class=tabbed-labels><label for=__tabbed_8_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_8_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test.overrides]</span><span class=w></span>
<span class=n>env</span><span class=p>.</span><span class=n>GITHUB_ACTIONS</span><span class=p>.</span><span class=n>dev-mode</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>false</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"true"</span><span class=p>]</span><span class=w> </span><span class=p>}</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test.overrides]</span><span class=w></span>
<span class=n>env</span><span class=p>.</span><span class=n>GITHUB_ACTIONS</span><span class=p>.</span><span class=n>dev-mode</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>false</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"true"</span><span class=p>]</span><span class=w> </span><span class=p>}</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h3 id=matrix-variable-overrides>Matrix variable overrides<a class=headerlink href=#matrix-variable-overrides title="Permanent link"></a></h3> <p>The <a href=#matrix>matrix</a> variables used to generate each environment can be used to modify options within using the <code>matrix</code> source.</p> <div class="tabbed-set tabbed-alternate" data-tabs=9:2><input checked=checked id=__tabbed_9_1 name=__tabbed_9 type=radio><input id=__tabbed_9_2 name=__tabbed_9 type=radio><div class=tabbed-labels><label for=__tabbed_9_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_9_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>version</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"PRODUCT_VERSION"</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>auth</span><span class=p>.</span><span class=n>features</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"oauth"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"oauth2"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"kerberos"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"krb5"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[[tool.hatch.envs.test.matrix]]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"27"</span><span class=p>,</span><span class=w> </span><span class=s>"38"</span><span class=p>]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"legacy"</span><span class=p>,</span><span class=w> </span><span class=s>"latest"</span><span class=p>]</span><span class=w></span>
<span class=n>auth</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"oauth2"</span><span class=p>,</span><span class=w> </span><span class=s>"krb5"</span><span class=p>,</span><span class=w> </span><span class=s>"noauth"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>version</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"PRODUCT_VERSION"</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>auth</span><span class=p>.</span><span class=n>features</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"oauth"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"oauth2"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"kerberos"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"kerberos"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[[envs.test.matrix]]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"27"</span><span class=p>,</span><span class=w> </span><span class=s>"38"</span><span class=p>]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"legacy"</span><span class=p>,</span><span class=w> </span><span class=s>"latest"</span><span class=p>]</span><span class=w></span>
<span class=n>auth</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"oauth2"</span><span class=p>,</span><span class=w> </span><span class=s>"kerberos"</span><span class=p>,</span><span class=w> </span><span class=s>"noauth"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h3 id=name-overrides>Name overrides<a class=headerlink href=#name-overrides title="Permanent link"></a></h3> <p>When a <a href=#matrix>matrix</a> is defined, the <code>name</code> source can be used for regular expression matching on the generated name, minus the prefix for non-<a href=#default-environment>default</a> environments.</p> <div class="tabbed-set tabbed-alternate" data-tabs=10:2><input checked=checked id=__tabbed_10_1 name=__tabbed_10 type=radio><input id=__tabbed_10_2 name=__tabbed_10 type=radio><div class=tabbed-labels><label for=__tabbed_10_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_10_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test.overrides]</span><span class=w></span>
<span class=n>name</span><span class=p>.</span><span class=s>"^0"</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"TESTING_UNSTABLE=true"</span><span class=w></span>
<span class=k>[[tool.hatch.envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"0.1.0"</span><span class=p>,</span><span class=w> </span><span class=s>"0.2.0"</span><span class=p>,</span><span class=w> </span><span class=s>"1.0.0"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test.overrides]</span><span class=w></span>
<span class=n>name</span><span class=p>.</span><span class=s>"^0"</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"TESTING_UNSTABLE=true"</span><span class=w></span>
<span class=k>[[envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"0.1.0"</span><span class=p>,</span><span class=w> </span><span class=s>"0.2.0"</span><span class=p>,</span><span class=w> </span><span class=s>"1.0.0"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h3 id=types>Types<a class=headerlink href=#types title="Permanent link"></a></h3> <ul> <li> <p>Literal types like strings for the <a href=../overview/#python-version>Python version</a> or booleans for <a href=../overview/#skip-install>skipping installation</a> can be set using the value itself, an inline table, or an array. For example:</p> <div class="tabbed-set tabbed-alternate" data-tabs=11:2><input checked=checked id=__tabbed_11_1 name=__tabbed_11 type=radio><input id=__tabbed_11_2 name=__tabbed_11 type=radio><div class=tabbed-labels><label for=__tabbed_11_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_11_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>foo</span><span class=p>.</span><span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"310"</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>bar</span><span class=p>.</span><span class=n>skip-install</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>true</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"..."</span><span class=p>]</span><span class=w> </span><span class=p>}</span><span class=w></span>
<span class=n>env</span><span class=p>.</span><span class=n>CI</span><span class=p>.</span><span class=n>dev-mode</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>false</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"..."</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=w> </span><span class=n>true</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>foo</span><span class=p>.</span><span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"310"</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>bar</span><span class=p>.</span><span class=n>skip-install</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>true</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"..."</span><span class=p>]</span><span class=w> </span><span class=p>}</span><span class=w></span>
<span class=n>env</span><span class=p>.</span><span class=n>CI</span><span class=p>.</span><span class=n>dev-mode</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=n>false</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"..."</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=w> </span><span class=n>true</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>For arrays, the first allowed value will be used.</p> </li> <li> <p>Array types like <a href=../overview/#dependencies>dependencies</a> or <a href=../overview/#commands>commands</a> can be appended to using an array of strings or inline tables. For example:</p> <div class="tabbed-set tabbed-alternate" data-tabs=12:2><input checked=checked id=__tabbed_12_1 name=__tabbed_12 type=radio><input id=__tabbed_12_2 name=__tabbed_12 type=radio><div class=tabbed-labels><label for=__tabbed_12_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_12_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>foo</span><span class=p>.</span><span class=n>dependencies</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=s>"httpx"</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"cryptography"</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>foo</span><span class=p>.</span><span class=n>dependencies</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=s>"httpx"</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"cryptography"</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> </li> <li> <p>Mapping types like <a href=../overview/#environment-variables>environment variables</a> or <a href=../overview/#scripts>scripts</a> can have keys set using a string, or an array of strings or inline tables. For example:</p> <div class="tabbed-set tabbed-alternate" data-tabs=13:2><input checked=checked id=__tabbed_13_1 name=__tabbed_13 type=radio><input id=__tabbed_13_2 name=__tabbed_13 type=radio><div class=tabbed-labels><label for=__tabbed_13_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_13_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>foo</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY=VALUE"</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>bar</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=s>"KEY1=VALUE1"</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY2"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE2"</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>foo</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY=VALUE"</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>bar</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=s>"KEY1=VALUE1"</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY2"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE2"</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>If the value is missing (no <code>=</code> for strings, no <code>value</code> key for inline tables), then the value will be set to the value of the source condition.</p> </li> </ul> <h3 id=overwriting>Overwriting<a class=headerlink href=#overwriting title="Permanent link"></a></h3> <p>Rather than supplementing the values within mapping types or array types, you can overwrite the option as a whole by prefixing the name with <code>set-</code>:</p> <div class="tabbed-set tabbed-alternate" data-tabs=14:2><input checked=checked id=__tabbed_14_1 name=__tabbed_14 type=radio><input id=__tabbed_14_2 name=__tabbed_14 type=radio><div class=tabbed-labels><label for=__tabbed_14_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_14_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>foo</span><span class=p>.</span><span class=n>set-platforms</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"macos"</span><span class=p>,</span><span class=w> </span><span class=s>"linux"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>foo</span><span class=p>.</span><span class=n>set-platforms</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"macos"</span><span class=p>,</span><span class=w> </span><span class=s>"linux"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>When overwriting entire options or keys within mappings, override sources are applied in the following order:</p> <ol> <li><a href=#platform-overrides>platform</a></li> <li><a href=#environment-variable-overrides>environment variables</a></li> <li><a href=#matrix-variable-overrides>matrix variables</a></li> <li><a href=#name-overrides>names</a></li> </ol> <h3 id=conditions>Conditions<a class=headerlink href=#conditions title="Permanent link"></a></h3> <p>You may specify certain extra keys for any inline table that will determine whether or not to apply that entry. These modifiers may be combined with others and any negative evaluation will immediately cause the entry to be skipped.</p> <h4 id=allowed-values>Allowed values<a class=headerlink href=#allowed-values title="Permanent link"></a></h4> <p>The <code>if</code> key represents the allowed values for that condition. If the value of the condition is not listed, then that entry will not be applied:</p> <div class="tabbed-set tabbed-alternate" data-tabs=15:2><input checked=checked id=__tabbed_15_1 name=__tabbed_15 type=radio><input id=__tabbed_15_2 name=__tabbed_15 type=radio><div class=tabbed-labels><label for=__tabbed_15_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_15_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>version</span><span class=p>.</span><span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"pypy"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"3.14"</span><span class=p>]</span><span class=w> </span><span class=p>}</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>version</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY1"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE1"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY2"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE2"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"3.14"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[[tool.hatch.envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>,</span><span class=w> </span><span class=s>"3.14"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test.overrides]</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>version</span><span class=p>.</span><span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"pypy"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"3.14"</span><span class=p>]</span><span class=w> </span><span class=p>}</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>version</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY1"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE1"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY2"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE2"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"3.14"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[[envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>,</span><span class=w> </span><span class=s>"3.14"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h4 id=specific-platforms>Specific platforms<a class=headerlink href=#specific-platforms title="Permanent link"></a></h4> <p>The <code>platform</code> key represents the desired platforms. If the current platform is not listed, then that entry will not be applied:</p> <div class="tabbed-set tabbed-alternate" data-tabs=16:2><input checked=checked id=__tabbed_16_1 name=__tabbed_16 type=radio><input id=__tabbed_16_2 name=__tabbed_16 type=radio><div class=tabbed-labels><label for=__tabbed_16_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_16_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test.overrides]</span><span class=w></span>
<span class=n>env</span><span class=p>.</span><span class=n>EXPERIMENTAL</span><span class=p>.</span><span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"pypy"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"1"</span><span class=p>],</span><span class=w> </span><span class=n>platform</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"macos"</span><span class=p>]</span><span class=w> </span><span class=p>}</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>version</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY1"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE1"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>],</span><span class=w> </span><span class=n>platform</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"linux"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY2"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE2"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"3.14"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[[tool.hatch.envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>,</span><span class=w> </span><span class=s>"3.14"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test.overrides]</span><span class=w></span>
<span class=n>env</span><span class=p>.</span><span class=n>EXPERIMENTAL</span><span class=p>.</span><span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"pypy"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"1"</span><span class=p>],</span><span class=w> </span><span class=n>platform</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"macos"</span><span class=p>]</span><span class=w> </span><span class=p>}</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>version</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY1"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE1"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>],</span><span class=w> </span><span class=n>platform</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"linux"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY2"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE2"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"3.14"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[[envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>,</span><span class=w> </span><span class=s>"3.14"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h4 id=required-environment-variables>Required environment variables<a class=headerlink href=#required-environment-variables title="Permanent link"></a></h4> <p>The <code>env</code> key represents the required environment variables. If any of the listed environment variables are not set or the defined value does not match, then that entry will not be applied:</p> <div class="tabbed-set tabbed-alternate" data-tabs=17:2><input checked=checked id=__tabbed_17_1 name=__tabbed_17 type=radio><input id=__tabbed_17_2 name=__tabbed_17 type=radio><div class=tabbed-labels><label for=__tabbed_17_1><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> pyproject.toml</label><label for=__tabbed_17_2><span class=twemoji><svg viewbox="0 0 16 16" xmlns=http://www.w3.org/2000/svg><path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0v-2.5zm7.5-.188V4.25c0 .138.112.25.25.25h2.688a.252.252 0 0 0-.011-.013l-2.914-2.914a.272.272 0 0 0-.013-.011zM5.72 6.72a.75.75 0 0 0 0 1.06l1.47 1.47-1.47 1.47a.75.75 0 1 0 1.06 1.06l2-2a.75.75 0 0 0 0-1.06l-2-2a.75.75 0 0 0-1.06 0zM3.28 7.78a.75.75 0 0 0-1.06-1.06l-2 2a.75.75 0 0 0 0 1.06l2 2a.75.75 0 0 0 1.06-1.06L1.81 9.25l1.47-1.47z" fill-rule=evenodd></path></svg></span> hatch.toml</label></div> <div class=tabbed-content> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[tool.hatch.envs.test.overrides]</span><span class=w></span>
<span class=n>platform</span><span class=p>.</span><span class=n>windows</span><span class=p>.</span><span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"pypy"</span><span class=p>,</span><span class=w> </span><span class=n>env</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"EXPERIMENTAL"</span><span class=p>]</span><span class=w> </span><span class=p>}</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>version</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY1"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE1"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>],</span><span class=w> </span><span class=n>env</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"FOO"</span><span class=p>,</span><span class=w> </span><span class=s>"BAR=BAZ"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY2"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE2"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"3.14"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[[tool.hatch.envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>,</span><span class=w> </span><span class=s>"3.14"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.test.overrides]</span><span class=w></span>
<span class=n>platform</span><span class=p>.</span><span class=n>windows</span><span class=p>.</span><span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"pypy"</span><span class=p>,</span><span class=w> </span><span class=n>env</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"EXPERIMENTAL"</span><span class=p>]</span><span class=w> </span><span class=p>}</span><span class=w></span>
<span class=n>matrix</span><span class=p>.</span><span class=n>version</span><span class=p>.</span><span class=n>env-vars</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY1"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE1"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>],</span><span class=w> </span><span class=n>env</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"FOO"</span><span class=p>,</span><span class=w> </span><span class=s>"BAR=BAZ"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=w> </span><span class=p>{</span><span class=w> </span><span class=n>key</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"KEY2"</span><span class=p>,</span><span class=w> </span><span class=n>value</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>"VALUE2"</span><span class=p>,</span><span class=w> </span><span class=n>if</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"3.14"</span><span class=p>]</span><span class=w> </span><span class=p>},</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[[envs.test.matrix]]</span><span class=w></span>
<span class=n>version</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>"42"</span><span class=p>,</span><span class=w> </span><span class=s>"3.14"</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Date of last update"> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1-2.1-2M12.5 7v5.2l4 2.4-1 1L11 13V7h1.5M11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2v1.8Z"></path></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">July 25, 2022</span> </span> </aside> </article> </div> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> </main> <footer class=md-footer> <nav aria-label=Footer class="md-footer__inner md-grid"> <a aria-label="Previous: Overview" class="md-footer__link md-footer__link--prev" href=../overview/ rel=prev> <div class="md-footer__button md-icon"> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"></path></svg> </div> <div class=md-footer__title> <div class=md-ellipsis> <span class=md-footer__direction> Previous </span> Overview </div> </div> </a> <a aria-label="Next: Context formatting" class="md-footer__link md-footer__link--next" href=../../context/ rel=next> <div class=md-footer__title> <div class=md-ellipsis> <span class=md-footer__direction> Next </span> Context formatting </div> </div> <div class="md-footer__button md-icon"> <svg viewbox="0 0 24 24" xmlns=http://www.w3.org/2000/svg><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"></path></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright © Ofek Lev 2017-present </div> <div> Logo by <a href=https://openai.com/dall-e-2/ rel=noopener target=_blank> DALL·E </a> and <a href=https://boriscrowther.com/ rel=noopener target=_blank> Boris Crowther </a> </div> Made with <a href=https://squidfunk.github.io/mkdocs-material/ rel=noopener target=_blank> Material for MkDocs </a> </div> <div class=md-social> <a class=md-social__link href=https://github.com/ofek rel=noopener target=_blank title=github.com> <svg viewbox="0 0 480 512" xmlns=http://www.w3.org/2000/svg><!-- Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z"></path></svg> </a> <a class=md-social__link href=https://ofek.dev/words/ rel=noopener target=_blank title=ofek.dev> <svg viewbox="0 0 512 512" xmlns=http://www.w3.org/2000/svg><!-- Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M192 32c0 17.7 14.3 32 32 32 123.7 0 224 100.3 224 224 0 17.7 14.3 32 32 32s32-14.3 32-32C512 128.9 383.1 0 224 0c-17.7 0-32 14.3-32 32zm0 96c0 17.7 14.3 32 32 32 70.7 0 128 57.3 128 128 0 17.7 14.3 32 32 32s32-14.3 32-32c0-106-86-192-192-192-17.7 0-32 14.3-32 32zm-96 16c0-26.5-21.5-48-48-48S0 117.5 0 144v224c0 79.5 64.5 144 144 144s144-64.5 144-144-64.5-144-144-144h-16v96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48V144z"></path></svg> </a> <a class=md-social__link href=https://twitter.com/Ofekmeister rel=noopener target=_blank title=twitter.com> <svg viewbox="0 0 512 512" xmlns=http://www.w3.org/2000/svg><!-- Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path></svg> </a> <a class=md-social__link href=https://www.linkedin.com/in/ofeklev/ rel=noopener target=_blank title=www.linkedin.com> <svg viewbox="0 0 448 512" xmlns=http://www.w3.org/2000/svg><!-- Font Awesome Free 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z"></path></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <script id=__config type=application/json>{"base": "../../..", "features": ["navigation.sections", "navigation.expand", "navigation.tabs", "navigation.tabs.sticky", "navigation.instant"], "search": "../../../assets/javascripts/workers/search.720157f5.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "version": {"provider": "mike"}}</script> <script src=../../../assets/javascripts/bundle.b7e8f764.min.js></script> <script>document$.subscribe(() => {const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom"});})</script></body> </html>