Project metadata¶
Project metadata is stored in a pyproject.toml file located at the root of a project's tree and is based entirely on PEP 621.
Name (required)¶
The name of the project.
[project]
name = "your-app"
Version (required)¶
See the dedicated versioning section.
[project]
...
dynamic = ["version"]
[tool.hatch.version]
path = "..."
[project]
...
version = "0.0.1"
Description¶
A brief summary of the project.
[project]
...
description = '...'
Readme¶
The full description of the project.
The file extension must be .md, .rst, or .txt.
[project]
...
readme = "README.md"
The content-type field must be set to text/markdown, text/x-rst, or text/plain.
A charset field may also be set to instruct which encoding to use for reading the file, defaulting to utf-8.
[project]
...
readme = {"file" = "README.md", "content-type" = "text/markdown"}
The content-type field must be set to text/markdown or text/x-rst.
[project]
...
readme = {"text" = "...", "content-type" = "text/markdown"}
Note
If this is defined as a file, then it will always be included in source distributions for consistent builds.
Python support¶
The Python version requirements of the project.
[project]
...
requires-python = ">=3.8"
License¶
For more information, see PEP 639.
[project]
...
license = "Apache-2.0 OR MIT"
[project]
...
license-files = { paths = ["LICENSE.txt"] }
[project]
...
license-files = { globs = ["LICENSES/*"] }
Ownership¶
The people or organizations considered to be the authors or maintainers of the project. The exact meaning is open to interpretation; it may list the original or primary authors, current maintainers, or owners of the package. If the values are the same, prefer only the use of the authors field.
[project]
...
authors = [
  { name = "...", email = "..." },
]
maintainers = [
  { name = "...", email = "..." },
]
Keywords¶
The keywords used to assist in the discovery of the project.
[project]
...
keywords = [
  "...",
]
Classifiers¶
The trove classifiers that apply to the project.
[project]
...
classifiers = [
  "...",
]
URLs¶
A table of URLs where the key is the URL label and the value is the URL itself.
[project.urls]
Documentation = "..."
"Source code" = "..."
Dependencies¶
The format is based on PEP 631. See the dependency specification section for more information.
Entries support context formatting and disallow direct references by default.
Required¶
[project]
...
dependencies = [
  "...",
]
Optional¶
[project.optional-dependencies]
option1 = [
  "...",
]
option2 = [
  "...",
]
Entry points¶
Entry points are a mechanism for the project to advertise components it provides to be discovered and used by other code.
CLI¶
[project.scripts]
cli-name = "pkg.subpkg:func"
GUI¶
[project.gui-scripts]
gui-name = "pkg.subpkg:func"
Plugins¶
[project.entry-points.plugin-namespace]
plugin-name1 = "pkg.subpkg1"
plugin-name2 = "pkg.subpkg2:func"
Metadata options¶
Allowing direct references¶
By default, dependencies are not allowed to define direct references. To disable this check, set allow-direct-references to true:
[tool.hatch.metadata]
allow-direct-references = true
[metadata]
allow-direct-references = true