Environment configuration¶
すべての環境は、tool.hatch.envs
テーブル内のセクションとして定義されます。
[tool.hatch.envs.<ENV_NAME>]
[envs.<ENV_NAME>]
環境のstorage locationは、完全に設定可能です。
コマンドラインで環境が明示的に選択されていない限り、default
環境が使用されます。この環境のtypeのデフォルトはvirtual
です。
Info
hatch-
で始まる環境は、testingのように特殊な目的で使用されます。
Inheritance¶
すべての環境は、そのテンプレート
オプションで定義された環境を継承します。デフォルトはデフォルト
です。
したがって、次のように設定します。:
[tool.hatch.envs.foo]
type = "baz"
skip-install = true
[tool.hatch.envs.bar]
template = "foo"
skip-install = false
[envs.foo]
type = "baz"
skip-install = true
[envs.bar]
template = "foo"
skip-install = false
環境bar
のタイプはbaz
になり、skip-install
はfalse
に設定されます。
Note
環境はmatricesを継承しません。
Self-referential environments¶
継承を無効にするには、template
を環境独自の名前に設定します。:
[tool.hatch.envs.foo]
template = "foo"
[envs.foo]
template = "foo"
Detached environments¶
一般的なユースケースは、継承やプロジェクトのインストールを必要としないスタンドアロン環境で、リンティングや時にはドキュメントの構築などに使用されます。detached
オプションを有効にすると、環境はself-referentialになり、skip project installation:
[tool.hatch.envs.lint]
detached = true
[envs.lint]
detached = true
Dependencies¶
project's metadataで定義されたものに加えて、dependenciesをインストールできます。エントリはcontext formattingをサポートします。
[tool.hatch.envs.test]
dependencies = [
"coverage[toml]",
"pytest",
"pytest-cov",
"pytest-mock",
]
[envs.test]
dependencies = [
"coverage[toml]",
"pytest",
"pytest-cov",
"pytest-mock",
]
inherited environmentsとわずかに異なる依存関係を持つ環境を定義する場合は、extra-dependencies
オプションを使用してdependencies
オプションの再宣言を避けることができます。:
[tool.hatch.envs.default]
dependencies = [
"foo",
"bar",
]
[tool.hatch.envs.experimental]
extra-dependencies = [
"baz",
]
[envs.default]
dependencies = [
"foo",
"bar",
]
[envs.experimental]
extra-dependencies = [
"baz",
]
Tip
Hatchはpipを使用して依存関係をインストールするため、Hatchをサポートする任意のconfigurationも同様にインストールします。たとえば、プライベートリポジトリのみを使用したい場合は、PIP_INDEX_URL
環境変数を設定できます。
Installation¶
Features (extras)¶
プロジェクトにoptional dependenciesが定義されている場合は、features
オプションを使用してインストールするグループを選択できます。:
[tool.hatch.envs.nightly]
features = [
"server",
"grpc",
]
[envs.nightly]
features = [
"server",
"grpc",
]
Note
機能/オプションの依存関係は、他のツールではエキストラ
とも呼ばれます。
Dev mode¶
デフォルトでは、環境は常にディスク上のプロジェクトの現在の状態を反映します。たとえば、Python環境で編集可能モードでインストールします。この動作を無効にし、新しい環境の作成時にのみプロジェクトをインストールするには、dev-mode
をfalse
に設定します。それ以降は、プロジェクトのインストールを手動で管理する必要があります。
[tool.hatch.envs.static]
dev-mode = false
[envs.static]
dev-mode = false
Skip install¶
デフォルトでは、環境は作成中にプロジェクトをインストールします。この手順を無視するには、skip-install
をtrue
に設定します。:
[tool.hatch.envs.lint]
skip-install = true
[envs.lint]
skip-install = true
Environment variables¶
Defined¶
環境変数はenv-vars
オプションで定義できます。:
[tool.hatch.envs.docs]
dependencies = [
"mkdocs"
]
[tool.hatch.envs.docs.env-vars]
SOURCE_DATE_EPOCH = "1580601600"
[envs.docs]
dependencies = [
"mkdocs"
]
[envs.docs.env-vars]
SOURCE_DATE_EPOCH = "1580601600"
値はcontext formattingをサポートします。
Filters¶
デフォルトでは、環境はすべての環境変数にアクセスできます。env-include
/env-exclude
オプションを使用して、ワイルドカードパターンでフィルタリングできます。:
[tool.hatch.envs.<ENV_NAME>]
env-include = [
"FOO*",
]
env-exclude = [
"BAR",
]
[envs.<ENV_NAME>]
env-include = [
"FOO*",
]
env-exclude = [
"BAR",
]
除外パターンが優先されますが、defined環境変数には影響しません。
Scripts¶
他のスクリプトの先頭でexecutedまたは参照される名前付きスクリプトを定義できます。Context formattingがサポートされています。
たとえば、次の設定では:
[tool.hatch.envs.test]
dependencies = [
"coverage[toml]",
"pytest",
"pytest-cov",
"pytest-mock",
]
[tool.hatch.envs.test.scripts]
run-coverage = "pytest --cov-config=pyproject.toml --cov=pkg --cov=tests"
run = "run-coverage --no-cov"
[envs.test]
dependencies = [
"coverage[toml]",
"pytest",
"pytest-cov",
"pytest-mock",
]
[envs.test.scripts]
run-coverage = "pytest --cov-config=pyproject.toml --cov=pkg --cov=tests"
run = "run-coverage --no-cov"
run
スクリプトは次のように展開されます。:
pytest --cov-config=pyproject.toml --cov=pkg --cov=tests --no-cov
スクリプトは、文字列の配列として定義することもできます。
[tool.hatch.envs.style]
detached = true
dependencies = [
"flake8",
"black",
"isort",
]
[tool.hatch.envs.style.scripts]
check = [
"flake8 .",
"black --check --diff .",
"isort --check-only --diff .",
]
fmt = [
"isort .",
"black .",
"check",
]
[envs.style]
detached = true
dependencies = [
"flake8",
"black",
"isort",
]
[envs.style.scripts]
check = [
"flake8 .",
"black --check --diff .",
"isort --check-only --diff .",
]
fmt = [
"isort .",
"black .",
"check",
]
makeと同様に、-
(ハイフン)で始まるコマンドの終了コードは無視できます。たとえば、次の設定で定義されているスクリプトerror
は、終了コードとして3
を持つ2番目のコマンドの後で停止します。:
[tool.hatch.envs.test.scripts]
error = [
"- exit 1",
"exit 3",
"exit 0",
]
[envs.test.scripts]
error = [
"- exit 1",
"exit 3",
"exit 0",
]
Extra scripts¶
個々のスクリプトは、オプションと同様に親環境からinheritします。個々のスクリプトが親環境で定義されたスクリプトを上書きしないようにするには、代わりに「extra-scripts」オプションを使用します。このオプションでは、定義されていないスクリプトしか追加できません。
Commands¶
すべてのコマンドは、定義された任意のscriptsを使用できます。また、スクリプトと同様に、context formattingもサポートされており、ハイフンで始まるコマンドの終了コードは無視されます。
Pre-install¶
プロジェクトのenvironmentsinstallの直前にコマンドを実行できます。
[tool.hatch.envs.<ENV_NAME>]
pre-install-commands = [
"...",
]
[envs.<ENV_NAME>]
pre-install-commands = [
"...",
]
Post-install¶
プロジェクトをenvironmentsinstallした直後にコマンドを実行できます。
[tool.hatch.envs.<ENV_NAME>]
post-install-commands = [
"...",
]
[envs.<ENV_NAME>]
post-install-commands = [
"...",
]
Python version¶
python
オプションは、使用するPythonのバージョン、またはPythonインタプリタへの絶対パスを指定します。:
[tool.hatch.envs.<ENV_NAME>]
python = "3.10"
[envs.<ENV_NAME>]
python = "3.10"
すべてのenvironment typesは、このオプションに従う必要があります。
Supported platforms¶
platforms
オプションは、環境と互換性のあるオペレーティングシステムを示します。:
[tool.hatch.envs.<ENV_NAME>]
platforms = ["linux", "windows", "macos"]
[envs.<ENV_NAME>]
platforms = ["linux", "windows", "macos"]
The following platforms are supported:
次のプラットフォームがサポートされています。:
linux
windows
macos
指定しない場合、環境はすべてのプラットフォームと互換性があると見なされます。
Description¶
description
オプションは単なる情報であり、env show
コマンドの出力に表示されます。:
[tool.hatch.envs.<ENV_NAME>]
description = """
Lorem ipsum ...
"""
[envs.<ENV_NAME>]
description = """
Lorem ipsum ...
"""
Type¶
環境の「タイプ」によって、どのenvironment pluginが管理に使用されるかが決まります。唯一の組み込み環境タイプはvirtual
で、仮想Python環境を使用します。