pypa-hatch/1.0/config/environment/index.html

407 lines
173 KiB
HTML

<!doctype html><html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="Modern, extensible Python project management"><meta name=author content="Ofek Lev"><link href=https://ofek.dev/hatch/latest/1.0/config/environment/ rel=canonical><link rel=icon href=../../assets/images/favicon.ico><meta name=generator content="mkdocs-1.3.0, mkdocs-material-8.2.11"><title>Environments - Hatch</title><link rel=stylesheet href=../../assets/stylesheets/main.8c5ef100.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.9647289d.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../assets/_mkdocstrings.css><link rel=stylesheet href=../../assets/css/custom.css><link rel=stylesheet href=https://cdn.jsdelivr.net/gh/tonsky/FiraCode@5.2/distr/fira_code.css><script>__md_scope=new URL("../..",location),__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></head> <body dir=ltr data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo> <script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#environment-configuration class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <div data-md-component=outdated hidden> <aside class="md-banner md-banner--warning"> </aside> </div> <header class=md-header data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title=Hatch class="md-header__button md-logo" aria-label=Hatch data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M6.89 6.36C8.23 3.91 10 2 12 2c2 0 3.77 1.91 5.11 4.36-.85.21-1.61.71-2.11 1.41a3.712 3.712 0 0 0-5.2-.8c-.3.22-.58.49-.8.8-.5-.7-1.26-1.2-2.11-1.41M15 18.06l-3-3-3 3-3-3-1.27 1.27a7.504 7.504 0 0 0 9.11 5.43 7.529 7.529 0 0 0 5.43-5.43L18 15.06l-3 3m-6-2.12 3-3 3 3 3-3 1.5 1.5c-.13-2.31-.7-4.58-1.69-6.68-1.16.1-2.06 1.07-2.06 2.24h-1.5A2.25 2.25 0 0 0 12 7.75 2.25 2.25 0 0 0 9.75 10h-1.5c0-1.17-.9-2.14-2.06-2.24-.99 2.1-1.56 4.37-1.69 6.68l1.5-1.5 3 3Z"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></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> Environments </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_2 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><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"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to dark mode" type=radio name=__palette id=__palette_2> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><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"/></svg> </label> </form> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><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"/></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 type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><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"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> </label> <nav class=md-search__options aria-label=Search> <button type=reset class="md-search__icon md-icon" aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><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"/></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 href=https://github.com/ofek/hatch title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 480 512"><!-- Font Awesome Free 6.1.1 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"/></svg> </div> <div class=md-source__repository> ofek/hatch </div> </a> </div> </nav> </header> <div class=md-container data-md-component=container> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class="md-tabs__inner md-grid"> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> 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=../../meta/faq/ class=md-tabs__link> Meta </a> </li> </ul> </div> </nav> <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 class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title=Hatch class="md-nav__button md-logo" aria-label=Hatch data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M6.89 6.36C8.23 3.91 10 2 12 2c2 0 3.77 1.91 5.11 4.36-.85.21-1.61.71-2.11 1.41a3.712 3.712 0 0 0-5.2-.8c-.3.22-.58.49-.8.8-.5-.7-1.26-1.2-2.11-1.41M15 18.06l-3-3-3 3-3-3-1.27 1.27a7.504 7.504 0 0 0 9.11 5.43 7.529 7.529 0 0 0 5.43-5.43L18 15.06l-3 3m-6-2.12 3-3 3 3 3-3 1.5 1.5c-.13-2.31-.7-4.58-1.69-6.68-1.16.1-2.06 1.07-2.06 2.24h-1.5A2.25 2.25 0 0 0 12 7.75 2.25 2.25 0 0 0 9.75 10h-1.5c0-1.17-.9-2.14-2.06-2.24-.99 2.1-1.56 4.37-1.69 6.68l1.5-1.5 3 3Z"/></svg> </a> Hatch </label> <div class=md-nav__source> <a href=https://github.com/ofek/hatch title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 480 512"><!-- Font Awesome Free 6.1.1 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"/></svg> </div> <div class=md-source__repository> ofek/hatch </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_1 type=checkbox id=__nav_1> <label class=md-nav__link for=__nav_1> Home <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Home 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 href=../.. class=md-nav__link> About </a> </li> <li class=md-nav__item> <a href=../../install/ class=md-nav__link> Installation </a> </li> <li class=md-nav__item> <a href=../../intro/ class=md-nav__link> Introduction </a> </li> <li class=md-nav__item> <a href=../../environment/ class=md-nav__link> Environments </a> </li> <li class=md-nav__item> <a href=../../version/ class=md-nav__link> Versioning </a> </li> <li class=md-nav__item> <a href=../../build/ class=md-nav__link> Builds </a> </li> <li class=md-nav__item> <a href=../../publish/ class=md-nav__link> Publishing </a> </li> <li class=md-nav__item> <a href=../../next-steps/ class=md-nav__link> Next steps </a> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_1_9 type=checkbox id=__nav_1_9> <label class=md-nav__link for=__nav_1_9> Status <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Status 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> History </a> </li> <li class=md-nav__item> <a href=../../users/ class=md-nav__link> Users </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_2 type=checkbox id=__nav_2 checked> <label class=md-nav__link for=__nav_2> Configuration <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Configuration 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> Metadata </a> </li> <li class=md-nav__item> <a href=../dependency/ class=md-nav__link> Dependencies </a> </li> <li class=md-nav__item> <a href=../build/ class=md-nav__link> Build </a> </li> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" data-md-toggle=toc type=checkbox id=__toc> <label class="md-nav__link md-nav__link--active" for=__toc> Environments <span class="md-nav__icon md-icon"></span> </label> <a href=./ class="md-nav__link md-nav__link--active"> Environments </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <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 href=#inheritance class=md-nav__link> Inheritance </a> <nav class=md-nav aria-label=Inheritance> <ul class=md-nav__list> <li class=md-nav__item> <a href=#self-referential-environments class=md-nav__link> Self-referential environments </a> </li> <li class=md-nav__item> <a href=#detached-environments class=md-nav__link> Detached environments </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#dependencies class=md-nav__link> Dependencies </a> </li> <li class=md-nav__item> <a href=#installation class=md-nav__link> Installation </a> <nav class=md-nav aria-label=Installation> <ul class=md-nav__list> <li class=md-nav__item> <a href=#features class=md-nav__link> Features </a> </li> <li class=md-nav__item> <a href=#dev-mode class=md-nav__link> Dev mode </a> </li> <li class=md-nav__item> <a href=#skip-install class=md-nav__link> Skip install </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#environment-variables class=md-nav__link> Environment variables </a> <nav class=md-nav aria-label="Environment variables"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#defined class=md-nav__link> Defined </a> </li> <li class=md-nav__item> <a href=#filters class=md-nav__link> Filters </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#scripts class=md-nav__link> Scripts </a> </li> <li class=md-nav__item> <a href=#commands class=md-nav__link> Commands </a> <nav class=md-nav aria-label=Commands> <ul class=md-nav__list> <li class=md-nav__item> <a href=#pre-install class=md-nav__link> Pre-install </a> </li> <li class=md-nav__item> <a href=#post-install class=md-nav__link> Post-install </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#python-version class=md-nav__link> Python version </a> </li> <li class=md-nav__item> <a href=#supported-platforms class=md-nav__link> Supported platforms </a> </li> <li class=md-nav__item> <a href=#description class=md-nav__link> Description </a> </li> <li class=md-nav__item> <a href=#type class=md-nav__link> Type </a> </li> <li class=md-nav__item> <a href=#matrix class=md-nav__link> Matrix </a> <nav class=md-nav aria-label=Matrix> <ul class=md-nav__list> <li class=md-nav__item> <a href=#naming class=md-nav__link> Naming </a> <nav class=md-nav aria-label=Naming> <ul class=md-nav__list> <li class=md-nav__item> <a href=#python-variables class=md-nav__link> Python variables </a> </li> <li class=md-nav__item> <a href=#name-formatting class=md-nav__link> Name formatting </a> </li> <li class=md-nav__item> <a href=#default-environment class=md-nav__link> Default environment </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#selection class=md-nav__link> Selection </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#option-overrides class=md-nav__link> Option overrides </a> <nav class=md-nav aria-label="Option overrides"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#platform-overrides class=md-nav__link> Platform overrides </a> </li> <li class=md-nav__item> <a href=#environment-variable-overrides class=md-nav__link> Environment variable overrides </a> </li> <li class=md-nav__item> <a href=#matrix-variable-overrides class=md-nav__link> Matrix variable overrides </a> </li> <li class=md-nav__item> <a href=#types class=md-nav__link> Types </a> </li> <li class=md-nav__item> <a href=#overwriting class=md-nav__link> Overwriting </a> </li> <li class=md-nav__item> <a href=#conditions class=md-nav__link> Conditions </a> <nav class=md-nav aria-label=Conditions> <ul class=md-nav__list> <li class=md-nav__item> <a href=#allowed-values class=md-nav__link> Allowed values </a> </li> <li class=md-nav__item> <a href=#specific-platforms class=md-nav__link> Specific platforms </a> </li> <li class=md-nav__item> <a href=#required-environment-variables class=md-nav__link> Required environment variables </a> </li> </ul> </nav> </li> </ul> </nav> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=../project-templates/ class=md-nav__link> Project templates </a> </li> <li class=md-nav__item> <a href=../hatch/ class=md-nav__link> Hatch </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_3 type=checkbox id=__nav_3> <label class=md-nav__link for=__nav_3> CLI <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=CLI 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> About </a> </li> <li class=md-nav__item> <a href=../../cli/reference/ class=md-nav__link> Reference </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_4 type=checkbox id=__nav_4> <label class=md-nav__link for=__nav_4> Plugins <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Plugins 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> About </a> </li> <li class=md-nav__item> <a href=../../plugins/builder/ class=md-nav__link> Builder </a> </li> <li class=md-nav__item> <a href=../../plugins/build-hook/ class=md-nav__link> Build hook </a> </li> <li class=md-nav__item> <a href=../../plugins/metadata-hook/ class=md-nav__link> Metadata hook </a> </li> <li class=md-nav__item> <a href=../../plugins/environment/ class=md-nav__link> Environment </a> </li> <li class=md-nav__item> <a href=../../plugins/environment-collector/ class=md-nav__link> Environment collector </a> </li> <li class=md-nav__item> <a href=../../plugins/publisher/ class=md-nav__link> Publisher </a> </li> <li class=md-nav__item> <a href=../../plugins/version-source/ class=md-nav__link> Version source </a> </li> <li class=md-nav__item> <a href=../../plugins/version-scheme/ class=md-nav__link> Version scheme </a> </li> <li class=md-nav__item> <a href=../../plugins/utilities/ class=md-nav__link> Utilities </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle" data-md-toggle=__nav_5 type=checkbox id=__nav_5> <label class=md-nav__link for=__nav_5> Meta <span class="md-nav__icon md-icon"></span> </label> <nav class=md-nav aria-label=Meta data-md-level=1> <label class=md-nav__title for=__nav_5> <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> FAQ </a> </li> <li class=md-nav__item> <a href=../../meta/authors/ class=md-nav__link> Authors </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 class="md-nav md-nav--secondary" aria-label="Table of contents"> <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 href=#inheritance class=md-nav__link> Inheritance </a> <nav class=md-nav aria-label=Inheritance> <ul class=md-nav__list> <li class=md-nav__item> <a href=#self-referential-environments class=md-nav__link> Self-referential environments </a> </li> <li class=md-nav__item> <a href=#detached-environments class=md-nav__link> Detached environments </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#dependencies class=md-nav__link> Dependencies </a> </li> <li class=md-nav__item> <a href=#installation class=md-nav__link> Installation </a> <nav class=md-nav aria-label=Installation> <ul class=md-nav__list> <li class=md-nav__item> <a href=#features class=md-nav__link> Features </a> </li> <li class=md-nav__item> <a href=#dev-mode class=md-nav__link> Dev mode </a> </li> <li class=md-nav__item> <a href=#skip-install class=md-nav__link> Skip install </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#environment-variables class=md-nav__link> Environment variables </a> <nav class=md-nav aria-label="Environment variables"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#defined class=md-nav__link> Defined </a> </li> <li class=md-nav__item> <a href=#filters class=md-nav__link> Filters </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#scripts class=md-nav__link> Scripts </a> </li> <li class=md-nav__item> <a href=#commands class=md-nav__link> Commands </a> <nav class=md-nav aria-label=Commands> <ul class=md-nav__list> <li class=md-nav__item> <a href=#pre-install class=md-nav__link> Pre-install </a> </li> <li class=md-nav__item> <a href=#post-install class=md-nav__link> Post-install </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#python-version class=md-nav__link> Python version </a> </li> <li class=md-nav__item> <a href=#supported-platforms class=md-nav__link> Supported platforms </a> </li> <li class=md-nav__item> <a href=#description class=md-nav__link> Description </a> </li> <li class=md-nav__item> <a href=#type class=md-nav__link> Type </a> </li> <li class=md-nav__item> <a href=#matrix class=md-nav__link> Matrix </a> <nav class=md-nav aria-label=Matrix> <ul class=md-nav__list> <li class=md-nav__item> <a href=#naming class=md-nav__link> Naming </a> <nav class=md-nav aria-label=Naming> <ul class=md-nav__list> <li class=md-nav__item> <a href=#python-variables class=md-nav__link> Python variables </a> </li> <li class=md-nav__item> <a href=#name-formatting class=md-nav__link> Name formatting </a> </li> <li class=md-nav__item> <a href=#default-environment class=md-nav__link> Default environment </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#selection class=md-nav__link> Selection </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#option-overrides class=md-nav__link> Option overrides </a> <nav class=md-nav aria-label="Option overrides"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#platform-overrides class=md-nav__link> Platform overrides </a> </li> <li class=md-nav__item> <a href=#environment-variable-overrides class=md-nav__link> Environment variable overrides </a> </li> <li class=md-nav__item> <a href=#matrix-variable-overrides class=md-nav__link> Matrix variable overrides </a> </li> <li class=md-nav__item> <a href=#types class=md-nav__link> Types </a> </li> <li class=md-nav__item> <a href=#overwriting class=md-nav__link> Overwriting </a> </li> <li class=md-nav__item> <a href=#conditions class=md-nav__link> Conditions </a> <nav class=md-nav aria-label=Conditions> <ul class=md-nav__list> <li class=md-nav__item> <a href=#allowed-values class=md-nav__link> Allowed values </a> </li> <li class=md-nav__item> <a href=#specific-platforms class=md-nav__link> Specific platforms </a> </li> <li class=md-nav__item> <a href=#required-environment-variables class=md-nav__link> Required environment variables </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"> <h1 id=environment-configuration>Environment configuration<a class=headerlink href=#environment-configuration title="Permanent link">&para;</a></h1> <hr> <p>All environments are defined as sections within the <code>tool.hatch.envs</code> table.</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_1_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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;]</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;]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>The <a href=../hatch/#environments>storage location</a> for environments is completely configurable.</p> <p>Unless an environment is explicitly selected on the command line, the <code>default</code> environment will be used. The <a href=#type>type</a> of this environment defaults to <code>virtual</code>.</p> <h2 id=inheritance>Inheritance<a class=headerlink href=#inheritance title="Permanent link">&para;</a></h2> <p>All environments inherit from the environment defined by its <code>template</code> option, which defaults to <code>default</code>.</p> <p>So for 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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_2_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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.foo]</span><span class=w></span>
<span class=n>type</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;baz&quot;</span><span class=w></span>
<span class=n>skip-install</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>true</span><span class=w></span>
<span class=k>[tool.hatch.envs.bar]</span><span class=w></span>
<span class=n>template</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;foo&quot;</span><span class=w></span>
<span class=n>skip-install</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>false</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.foo]</span><span class=w></span>
<span class=n>type</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;baz&quot;</span><span class=w></span>
<span class=n>skip-install</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>true</span><span class=w></span>
<span class=k>[envs.bar]</span><span class=w></span>
<span class=n>template</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;foo&quot;</span><span class=w></span>
<span class=n>skip-install</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>false</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>the environment <code>bar</code> will be of type <code>baz</code> with <code>skip-install</code> set to <code>false</code>.</p> <div class="admonition note"> <p class=admonition-title>Note</p> <p>Environments do not inherit <a href=#matrix>matrices</a>.</p> </div> <h3 id=self-referential-environments>Self-referential environments<a class=headerlink href=#self-referential-environments title="Permanent link">&para;</a></h3> <p>You can disable inheritance by setting <code>template</code> to the environment's own name:</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_3_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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.foo]</span><span class=w></span>
<span class=n>template</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;foo&quot;</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.foo]</span><span class=w></span>
<span class=n>template</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;foo&quot;</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h3 id=detached-environments>Detached environments<a class=headerlink href=#detached-environments title="Permanent link">&para;</a></h3> <p>A common use case is standalone environments that do not require inheritance nor the installation of the project, such as for linting or sometimes building documentation. Enabling the <code>detached</code> option will make the environment <a href=#self-referential-environments>self-referential</a> and will <a href=#skip-install>skip project installation</a>:</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_4_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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.lint]</span><span class=w></span>
<span class=n>detached</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>true</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.lint]</span><span class=w></span>
<span class=n>detached</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>true</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h2 id=dependencies>Dependencies<a class=headerlink href=#dependencies title="Permanent link">&para;</a></h2> <p>You can install <a href=../dependency/ >dependencies</a> in addition to the ones defined by your <a href=../metadata/#dependencies>project's metadata</a>.</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_5_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;coverage[toml]&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest-cov&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest-mock&quot;</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]</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>&quot;coverage[toml]&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest-cov&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest-mock&quot;</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 you define environments with dependencies that only slightly differ from their <a href=#inheritance>inherited environments</a>, you can use the <code>extra-dependencies</code> option to avoid redeclaring the <code>dependencies</code> option:</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_6_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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.default]</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>&quot;foo&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;bar&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[tool.hatch.envs.experimental]</span><span class=w></span>
<span class=n>extra-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>&quot;baz&quot;</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.default]</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>&quot;foo&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;bar&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[envs.experimental]</span><span class=w></span>
<span class=n>extra-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>&quot;baz&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h2 id=installation>Installation<a class=headerlink href=#installation title="Permanent link">&para;</a></h2> <h3 id=features>Features<a class=headerlink href=#features title="Permanent link">&para;</a></h3> <p>If your project defines <a href=../metadata/#optional>optional dependencies</a>, you can select which groups to install using the <code>features</code> option:</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_7_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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.nightly]</span><span class=w></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=s>&quot;server&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;grpc&quot;</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.nightly]</span><span class=w></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=s>&quot;server&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;grpc&quot;</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=dev-mode>Dev mode<a class=headerlink href=#dev-mode title="Permanent link">&para;</a></h3> <p>By default, environments will always reflect the current state of your project on disk. Set <code>dev-mode</code> to <code>false</code> to disable this behavior:</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_8_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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.static]</span><span class=w></span>
<span class=n>dev-mode</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>false</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.static]</span><span class=w></span>
<span class=n>dev-mode</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>false</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h3 id=skip-install>Skip install<a class=headerlink href=#skip-install title="Permanent link">&para;</a></h3> <p>By default, environments will install your project during creation. To ignore this step, set <code>skip-install</code> to <code>true</code>:</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_9_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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.lint]</span><span class=w></span>
<span class=n>skip-install</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>true</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.lint]</span><span class=w></span>
<span class=n>skip-install</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>true</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h2 id=environment-variables>Environment variables<a class=headerlink href=#environment-variables title="Permanent link">&para;</a></h2> <h3 id=defined>Defined<a class=headerlink href=#defined title="Permanent link">&para;</a></h3> <p>You can define environment variables with the <code>env-vars</code> option:</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_10_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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.docs]</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>&quot;mkdocs&quot;</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[tool.hatch.envs.docs.env-vars]</span><span class=w></span>
<span class=n>SOURCE_DATE_EPOCH</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;1580601600&quot;</span><span class=w></span>
</code></pre></div> </div> <div class=tabbed-block> <div class=highlight><pre><span></span><code><span class=k>[envs.docs]</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>&quot;mkdocs&quot;</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[envs.docs.env-vars]</span><span class=w></span>
<span class=n>SOURCE_DATE_EPOCH</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;1580601600&quot;</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h3 id=filters>Filters<a class=headerlink href=#filters title="Permanent link">&para;</a></h3> <p>By default, environments will have access to all environment variables. You can filter with wildcard patterns using the <code>env-include</code>/<code>env-exclude</code> options:</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_11_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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;]</span><span class=w></span>
<span class=n>env-include</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>&quot;FOO*&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=n>env-exclude</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>&quot;BAR&quot;</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.&lt;ENV_NAME&gt;]</span><span class=w></span>
<span class=n>env-include</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>&quot;FOO*&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=n>env-exclude</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>&quot;BAR&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>Exclusion patterns take precedence but will never affect <a href=#defined>defined</a> environment variables.</p> <h2 id=scripts>Scripts<a class=headerlink href=#scripts title="Permanent link">&para;</a></h2> <p>You can define named scripts that may be <a href=../../environment/#command-execution>executed</a> or referenced at the beginning of other scripts.</p> <p>For example, in the following configuration:</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_12_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;coverage[toml]&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest-cov&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest-mock&quot;</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>run-coverage</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;pytest --cov-config=pyproject.toml --cov=pkg --cov=tests&quot;</span><span class=w></span>
<span class=n>run</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;run-coverage --no-cov&quot;</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>&quot;coverage[toml]&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest-cov&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest-mock&quot;</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>run-coverage</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;pytest --cov-config=pyproject.toml --cov=pkg --cov=tests&quot;</span><span class=w></span>
<span class=n>run</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;run-coverage --no-cov&quot;</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>the <code>run</code> script would be expanded to:</p> <div class=highlight><pre><span></span><code>pytest --cov-config=pyproject.toml --cov=pkg --cov=tests --no-cov
</code></pre></div> <p>Scripts can also be defined as an array of strings.</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_13_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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.style]</span><span class=w></span>
<span class=n>skip-install</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>true</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>&quot;flake8&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;black&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;isort&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[tool.hatch.envs.style.scripts]</span><span class=w></span>
<span class=n>check</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>&quot;flake8 .&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;black --check --diff .&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;isort --check-only --diff .&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=n>fmt</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>&quot;isort .&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;black .&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;check&quot;</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.style]</span><span class=w></span>
<span class=n>skip-install</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=kc>true</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>&quot;flake8&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;black&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;isort&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=k>[envs.style.scripts]</span><span class=w></span>
<span class=n>check</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>&quot;flake8 .&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;black --check --diff .&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;isort --check-only --diff .&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
<span class=n>fmt</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>&quot;isort .&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;black .&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;check&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <div class="admonition tip"> <p class=admonition-title>Tip</p> <p>Scripts <a href=#inheritance>inherit</a> from parent environments just like options.</p> </div> <h2 id=commands>Commands<a class=headerlink href=#commands title="Permanent link">&para;</a></h2> <p>All commands are able to use any defined <a href=#scripts>scripts</a>.</p> <h3 id=pre-install>Pre-install<a class=headerlink href=#pre-install title="Permanent link">&para;</a></h3> <p>You can run commands immediately before environments <a href=#skip-install>install</a> your project.</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_14_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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;]</span><span class=w></span>
<span class=n>pre-install-commands</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>&quot;...&quot;</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.&lt;ENV_NAME&gt;]</span><span class=w></span>
<span class=n>pre-install-commands</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>&quot;...&quot;</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=post-install>Post-install<a class=headerlink href=#post-install title="Permanent link">&para;</a></h3> <p>You can run commands immediately after environments <a href=#skip-install>install</a> your project.</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_15_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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;]</span><span class=w></span>
<span class=n>post-install-commands</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>&quot;...&quot;</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.&lt;ENV_NAME&gt;]</span><span class=w></span>
<span class=n>post-install-commands</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>&quot;...&quot;</span><span class=p>,</span><span class=w></span>
<span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h2 id=python-version>Python version<a class=headerlink href=#python-version title="Permanent link">&para;</a></h2> <p>The <code>python</code> option selects which version of Python to use:</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_16_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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;]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;3.10&quot;</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;]</span><span class=w></span>
<span class=n>python</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;3.10&quot;</span><span class=w></span>
</code></pre></div> </div> </div> </div> <p>All <a href=#type>environment types</a> should respect this option.</p> <h2 id=supported-platforms>Supported platforms<a class=headerlink href=#supported-platforms title="Permanent link">&para;</a></h2> <p>The <code>platforms</code> option indicates the operating systems with which the environment is compatible:</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 xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_17_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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;]</span><span class=w></span>
<span class=n>platforms</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>&quot;linux&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;windows&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;macos&quot;</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.&lt;ENV_NAME&gt;]</span><span class=w></span>
<span class=n>platforms</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=p>[</span><span class=s>&quot;linux&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;windows&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;macos&quot;</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> <p>If unspecified, the environment is assumed to be compatible with all platforms.</p> <h2 id=description>Description<a class=headerlink href=#description title="Permanent link">&para;</a></h2> <p>The <code>description</code> option is purely informational and is displayed in the output of the <a href=../../cli/reference/#hatch-env-show><code>env show</code></a> command:</p> <div class="tabbed-set tabbed-alternate" data-tabs=18:2><input checked=checked id=__tabbed_18_1 name=__tabbed_18 type=radio><input id=__tabbed_18_2 name=__tabbed_18 type=radio><div class=tabbed-labels><label for=__tabbed_18_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_18_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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;]</span><span class=w></span>
<span class=n>description</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;&quot;&quot;</span>
<span class=s>Lorem ipsum ...</span>
<span class=s>&quot;&quot;&quot;</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;]</span><span class=w></span>
<span class=n>description</span><span class=w> </span><span class=o>=</span><span class=w> </span><span class=s>&quot;&quot;&quot;</span>
<span class=s>Lorem ipsum ...</span>
<span class=s>&quot;&quot;&quot;</span><span class=w></span>
</code></pre></div> </div> </div> </div> <h2 id=type>Type<a class=headerlink href=#type title="Permanent link">&para;</a></h2> <p>An environment's <code>type</code> determines which <a href=../../plugins/environment/ >environment plugin</a> will be used for management. The only built-in environment type is <a href=../../plugins/environment/#virtual>virtual</a>, which uses virtual Python environments.</p> <h2 id=matrix>Matrix<a class=headerlink href=#matrix title="Permanent link">&para;</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=19:2><input checked=checked id=__tabbed_19_1 name=__tabbed_19 type=radio><input id=__tabbed_19_2 name=__tabbed_19 type=radio><div class=tabbed-labels><label for=__tabbed_19_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_19_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;pytest&quot;</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>&quot;27&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;38&quot;</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>&quot;42&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;3.14&quot;</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>&quot;38&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;39&quot;</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>&quot;9000&quot;</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>&quot;foo&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;bar&quot;</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>&quot;pytest&quot;</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>&quot;27&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;38&quot;</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>&quot;42&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;3.14&quot;</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>&quot;38&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;39&quot;</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>&quot;9000&quot;</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>&quot;foo&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;bar&quot;</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">&para;</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=20:2><input checked=checked id=__tabbed_20_1 name=__tabbed_20 type=radio><input id=__tabbed_20_2 name=__tabbed_20 type=radio><div class=tabbed-labels><label for=__tabbed_20_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_20_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;42&quot;</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>&quot;foo&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;bar&quot;</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>&quot;42&quot;</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>&quot;foo&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;bar&quot;</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 two exceptions to this format are described below.</p> <h4 id=python-variables>Python variables<a class=headerlink href=#python-variables title="Permanent link">&para;</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=21:2><input checked=checked id=__tabbed_21_1 name=__tabbed_21 type=radio><input id=__tabbed_21_2 name=__tabbed_21 type=radio><div class=tabbed-labels><label for=__tabbed_21_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_21_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;42&quot;</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>&quot;39&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;pypy3&quot;</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>&quot;42&quot;</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>&quot;39&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;pypy3&quot;</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=#python-version>Python version</a>.</p> </div> <h4 id=name-formatting>Name formatting<a class=headerlink href=#name-formatting title="Permanent link">&para;</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=22:2><input checked=checked id=__tabbed_22_1 name=__tabbed_22 type=radio><input id=__tabbed_22_2 name=__tabbed_22 type=radio><div class=tabbed-labels><label for=__tabbed_22_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_22_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;{variable}_{value}&quot;</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>&quot;42&quot;</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>&quot;foo&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;bar&quot;</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>&quot;{variable}_{value}&quot;</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>&quot;42&quot;</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>&quot;foo&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;bar&quot;</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">&para;</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">&para;</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=23:2><input checked=checked id=__tabbed_23_1 name=__tabbed_23 type=radio><input id=__tabbed_23_2 name=__tabbed_23 type=radio><div class=tabbed-labels><label for=__tabbed_23_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_23_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;coverage[toml]&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest-cov&quot;</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>&#39;pytest --cov-report=term-missing --cov-config=pyproject.toml --cov=pkg --cov=tests&#39;</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>&quot;27&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;38&quot;</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>&quot;42&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;3.14&quot;</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>&quot;coverage[toml]&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest&quot;</span><span class=p>,</span><span class=w></span>
<span class=w> </span><span class=s>&quot;pytest-cov&quot;</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>&#39;pytest --cov-report=term-missing --cov-config=pyproject.toml --cov=pkg --cov=tests&#39;</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>&quot;27&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;38&quot;</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>&quot;42&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;3.14&quot;</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">&para;</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=24:2><input checked=checked id=__tabbed_24_1 name=__tabbed_24 type=radio><input id=__tabbed_24_2 name=__tabbed_24 type=radio><div class=tabbed-labels><label for=__tabbed_24_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_24_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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">&para;</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=25:2><input checked=checked id=__tabbed_25_1 name=__tabbed_25 type=radio><input id=__tabbed_25_2 name=__tabbed_25 type=radio><div class=tabbed-labels><label for=__tabbed_25_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_25_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&#39;run=pytest -m &quot;not io_uring&quot;&#39;</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>&#39;run=pytest -m &quot;not io_uring&quot;&#39;</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">&para;</a></h3> <p>Environment variables can modify options using the <code>env</code> source.</p> <div class="tabbed-set tabbed-alternate" data-tabs=26:2><input checked=checked id=__tabbed_26_1 name=__tabbed_26 type=radio><input id=__tabbed_26_2 name=__tabbed_26 type=radio><div class=tabbed-labels><label for=__tabbed_26_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_26_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;true&quot;</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>&quot;true&quot;</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">&para;</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=27:2><input checked=checked id=__tabbed_27_1 name=__tabbed_27 type=radio><input id=__tabbed_27_2 name=__tabbed_27 type=radio><div class=tabbed-labels><label for=__tabbed_27_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_27_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;PRODUCT_VERSION&quot;</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>&quot;oauth&quot;</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>&quot;oauth2&quot;</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>&quot;kerberos&quot;</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>&quot;krb5&quot;</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>&quot;27&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;38&quot;</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>&quot;legacy&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;latest&quot;</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>&quot;oauth2&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;krb5&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;noauth&quot;</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>&quot;PRODUCT_VERSION&quot;</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>&quot;oauth&quot;</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>&quot;oauth2&quot;</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>&quot;kerberos&quot;</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>&quot;kerberos&quot;</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>&quot;27&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;38&quot;</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>&quot;legacy&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;latest&quot;</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>&quot;oauth2&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;kerberos&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;noauth&quot;</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">&para;</a></h3> <ul> <li> <p>Literal types like strings for the <a href=#python-version>Python version</a> or booleans for <a href=#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=28:2><input checked=checked id=__tabbed_28_1 name=__tabbed_28 type=radio><input id=__tabbed_28_2 name=__tabbed_28 type=radio><div class=tabbed-labels><label for=__tabbed_28_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_28_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;310&quot;</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>&quot;...&quot;</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>&quot;...&quot;</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>&quot;310&quot;</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>&quot;...&quot;</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>&quot;...&quot;</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=#dependencies>dependencies</a> or <a href=#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=29:2><input checked=checked id=__tabbed_29_1 name=__tabbed_29 type=radio><input id=__tabbed_29_2 name=__tabbed_29 type=radio><div class=tabbed-labels><label for=__tabbed_29_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_29_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;httpx&quot;</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>&quot;cryptography&quot;</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>&quot;httpx&quot;</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>&quot;cryptography&quot;</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=#environment-variables>environment variables</a> or <a href=#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=30:2><input checked=checked id=__tabbed_30_1 name=__tabbed_30 type=radio><input id=__tabbed_30_2 name=__tabbed_30 type=radio><div class=tabbed-labels><label for=__tabbed_30_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_30_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;KEY=VALUE&quot;</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>&quot;KEY1=VALUE1&quot;</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>&quot;KEY2&quot;</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>&quot;VALUE2&quot;</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>&quot;KEY=VALUE&quot;</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>&quot;KEY1=VALUE1&quot;</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>&quot;KEY2&quot;</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>&quot;VALUE2&quot;</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">&para;</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=31:2><input checked=checked id=__tabbed_31_1 name=__tabbed_31 type=radio><input id=__tabbed_31_2 name=__tabbed_31 type=radio><div class=tabbed-labels><label for=__tabbed_31_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_31_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;macos&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;linux&quot;</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>&quot;macos&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;linux&quot;</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> </ol> <h3 id=conditions>Conditions<a class=headerlink href=#conditions title="Permanent link">&para;</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">&para;</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=32:2><input checked=checked id=__tabbed_32_1 name=__tabbed_32 type=radio><input id=__tabbed_32_2 name=__tabbed_32 type=radio><div class=tabbed-labels><label for=__tabbed_32_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_32_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;pypy&quot;</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>&quot;3.14&quot;</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>&quot;KEY1&quot;</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>&quot;VALUE1&quot;</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>&quot;42&quot;</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>&quot;KEY2&quot;</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>&quot;VALUE2&quot;</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>&quot;3.14&quot;</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>&quot;42&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;3.14&quot;</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>&quot;pypy&quot;</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>&quot;3.14&quot;</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>&quot;KEY1&quot;</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>&quot;VALUE1&quot;</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>&quot;42&quot;</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>&quot;KEY2&quot;</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>&quot;VALUE2&quot;</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>&quot;3.14&quot;</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>&quot;42&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;3.14&quot;</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">&para;</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=33:2><input checked=checked id=__tabbed_33_1 name=__tabbed_33 type=radio><input id=__tabbed_33_2 name=__tabbed_33 type=radio><div class=tabbed-labels><label for=__tabbed_33_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_33_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;pypy&quot;</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>&quot;1&quot;</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>&quot;macos&quot;</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>&quot;KEY1&quot;</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>&quot;VALUE1&quot;</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>&quot;42&quot;</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>&quot;linux&quot;</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>&quot;KEY2&quot;</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>&quot;VALUE2&quot;</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>&quot;3.14&quot;</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>&quot;42&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;3.14&quot;</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>&quot;pypy&quot;</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>&quot;1&quot;</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>&quot;macos&quot;</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>&quot;KEY1&quot;</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>&quot;VALUE1&quot;</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>&quot;42&quot;</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>&quot;linux&quot;</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>&quot;KEY2&quot;</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>&quot;VALUE2&quot;</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>&quot;3.14&quot;</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>&quot;42&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;3.14&quot;</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">&para;</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=34:2><input checked=checked id=__tabbed_34_1 name=__tabbed_34 type=radio><input id=__tabbed_34_2 name=__tabbed_34 type=radio><div class=tabbed-labels><label for=__tabbed_34_1><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></svg></span> pyproject.toml</label><label for=__tabbed_34_2><span class=twemoji><svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 16 16"><path fill-rule=evenodd 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"/></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>&quot;pypy&quot;</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>&quot;EXPERIMENTAL&quot;</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>&quot;KEY1&quot;</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>&quot;VALUE1&quot;</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>&quot;42&quot;</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>&quot;FOO&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;BAR=BAZ&quot;</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>&quot;KEY2&quot;</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>&quot;VALUE2&quot;</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>&quot;3.14&quot;</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>&quot;42&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;3.14&quot;</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>&quot;pypy&quot;</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>&quot;EXPERIMENTAL&quot;</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>&quot;KEY1&quot;</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>&quot;VALUE1&quot;</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>&quot;42&quot;</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>&quot;FOO&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;BAR=BAZ&quot;</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>&quot;KEY2&quot;</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>&quot;VALUE2&quot;</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>&quot;3.14&quot;</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>&quot;42&quot;</span><span class=p>,</span><span class=w> </span><span class=s>&quot;3.14&quot;</span><span class=p>]</span><span class=w></span>
</code></pre></div> </div> </div> </div> <hr> <div class=md-source-file> <small> Last update: <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">April 13, 2022</span> </small> </div> </article> </div> </div> </main> <footer class=md-footer> <nav class="md-footer__inner md-grid" aria-label=Footer> <a href=../build/ class="md-footer__link md-footer__link--prev" aria-label="Previous: Build" rel=prev> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg> </div> <div class=md-footer__title> <div class=md-ellipsis> <span class=md-footer__direction> Previous </span> Build </div> </div> </a> <a href=../project-templates/ class="md-footer__link md-footer__link--next" aria-label="Next: Project templates" rel=next> <div class=md-footer__title> <div class=md-ellipsis> <span class=md-footer__direction> Next </span> Project templates </div> </div> <div class="md-footer__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></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 &copy; Ofek Lev 2017-present </div> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/ofek target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 480 512"><!-- Font Awesome Free 6.1.1 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"/></svg> </a> <a href=https://ofek.dev/words/ target=_blank rel=noopener title=ofek.dev class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 6.1.1 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="M217.6 96.1c-12.95-.625-24.66 9.156-25.52 22.37-.88 13.23 9.12 24.63 22.32 24.63 79.53 5.188 148.4 74.09 153.6 153.6.828 12.69 11.39 22.43 23.94 22.43.516 0 1.047-.031 1.578-.063 13.22-.843 23.25-12.28 22.39-25.5C409.3 191.8 320.3 102.8 217.6 96.1zM224 0c-17.7 0-32 14.31-32 32s14.33 32 32 32c123.5 0 224 100.5 224 224 0 17.69 14.33 32 32 32s32-14.31 32-32C512 129.2 382.8 0 224 0zm-51.7 226.8c-14.6-2.9-28.3 9-28.3 23.8v50.37c0 10.25 7.127 18.37 16.75 21.1 18.13 6.75 31.26 24.38 31.26 44.1 0 26.5-21.5 47.1-48.01 47.1-26.5 0-48.01-21.5-48.01-47.1V120c0-13.25-10.75-23.1-24.01-23.1l-48.01.008C10.75 96.02 0 106.8 0 120v247.1c0 89.5 82.14 160.2 175 140.7 54.38-11.5 98.27-55.5 109.8-109.7 17.4-82-37-156.3-112.5-171.3z"/></svg> </a> <a href=https://twitter.com/Ofekmeister target=_blank rel=noopener title=twitter.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 6.1.1 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"/></svg> </a> <a href=https://www.linkedin.com/in/ofeklev/ target=_blank rel=noopener title=www.linkedin.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.1.1 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"/></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.tabs"], "search": "../../assets/javascripts/workers/search.2a1c317c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, 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.748e2769.min.js></script> </body> </html>